jquery如何绑定一个已有的方法并传递参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery如何绑定一个已有的方法并传递参数相关的知识,希望对你有一定的参考价值。
已有的方法如:
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的调用得到不同的对应的方法。 参考技术A
实现方法:
可以将已存在的方法放在元素绑定的触发事件里,(如:点击、鼠标滑过等事件的闭包函数内)如下:
//这里调用已存在的方法,并按照已存在方法的参数传值
);
例如:
alert(num);
$("#id").bind("click",function()//绑定点击事件(可以绑定其他事件)
show(1);
);
防止jQuery .on多次绑定
jQuery off() 方法
$("button").click(function(){
$("p").off("click");
});
参数 | 描述 |
---|---|
event | 必需。规定要从被选元素移除的一个或多个事件或命名空间。 由空格分隔多个事件值。必须是有效的事件。 |
selector | 可选。规定添加事件处理程序时最初传递给 on() 方法的选择器。 |
function(eventObj) | 可选。规定当事件发生时运行的函数。 |
map | 规定事件映射 ({event:function, event:function, ...}),包含要添加到元素的一个或多个事件,以及当事件发生时运行的函数。 |
参考:http://www.runoob.com/jquery/event-off.html;
https://www.cnblogs.com/xiaobaimsy/p/5808269.html
以上是关于jquery如何绑定一个已有的方法并传递参数的主要内容,如果未能解决你的问题,请参考以下文章