问题:
已有的方法如:
function abc(aaa){
alert(aaa);
}
点击一个按钮执行这个方法,jquery写法为:
$("button").bind("click",abc);不知如何把参数传过去?
jquery例子中有:$("button").bind("click",{foo:"123"},abc);这种写法,通过event.target.foo获取参数值,但已有的方法我不能改,请问如何传递参数?
已有的方法如:
function abc(aaa){
alert(aaa);
}
点击一个按钮执行这个方法,jquery写法为:
$("button").bind("click",abc);不知如何把参数传过去?
jquery例子中有:$("button").bind("click",{foo:"123"},abc);这种写法,通过event.target.foo获取参数值,但已有的方法我不能改,请问如何传递参数?
问题补充:但我是写成了组件,方法名和参数都是先传到组件中,所以不能直接写abc(para),组件调用代码如下:
$.("body").组件名([{handler:abc,para:"afdsfds"},{handler:abcd,para:"1234"}]);
方法不一定都是abc
按钮是在组件中创建的,并把点击调用的方法绑定上,如上会创建两个按钮,各自调用不同的方法,并传递不同的参数
如果在匿名函数里先找到组件的引用,再调相应的方法,怎么调呢?我不能写死abc(para),不知怎么写动态传入的方法名
能给写出来几行示例吗?
=====================
答案:
用闭包+匿名函数吧
$("button").bind("click",function(e){
//这里通过对e的处理得到你的待传参数值
para = e.target.foo
abc(para)
})
--
可能我没理解你的意思
按钮是什么?是组件的一部分还是随便写在html里的?
如果是一部分那么你可以用this指向组件对应的方法调用吧
如果不是的话,你也可以在匿名函数里先找到组件的引用,再调相应的方法
本质上jquery.bind是把前后两个函数的参数一一对应地进行传递赋值的……
---
晕,js支持反射的,就是说你可以通过方法名的字符串调用该方法,例如
var a;
a.b = function(){/**/}
a.b() //传统的调用
a["b"]()//反射调用
所以在组件里可以写个属性(比如propFuncname),返回那个方法的名字的字符串,如"abc"
然后在匿名函数里找到组件的引用,通过上述属性(propFuncname)得到方法字符串,再用反射调用之。
这样可以保证,通过对公共属性propFuncname的调用得到不同的对应的方法。
$.("body").组件名([{handler:abc,para:"afdsfds"},{handler:abcd,para:"1234"}]);
方法不一定都是abc
按钮是在组件中创建的,并把点击调用的方法绑定上,如上会创建两个按钮,各自调用不同的方法,并传递不同的参数
如果在匿名函数里先找到组件的引用,再调相应的方法,怎么调呢?我不能写死abc(para),不知怎么写动态传入的方法名
能给写出来几行示例吗?
=====================
答案:
用闭包+匿名函数吧
$("button").bind("click",function(e){
//这里通过对e的处理得到你的待传参数值
para = e.target.foo
abc(para)
})
--
可能我没理解你的意思
按钮是什么?是组件的一部分还是随便写在html里的?
如果是一部分那么你可以用this指向组件对应的方法调用吧
如果不是的话,你也可以在匿名函数里先找到组件的引用,再调相应的方法
本质上jquery.bind是把前后两个函数的参数一一对应地进行传递赋值的……
---
晕,js支持反射的,就是说你可以通过方法名的字符串调用该方法,例如
var a;
a.b = function(){/**/}
a.b() //传统的调用
a["b"]()//反射调用
所以在组件里可以写个属性(比如propFuncname),返回那个方法的名字的字符串,如"abc"
然后在匿名函数里找到组件的引用,通过上述属性(propFuncname)得到方法字符串,再用反射调用之。
这样可以保证,通过对公共属性propFuncname的调用得到不同的对应的方法。
没有评论:
发表评论