请教关于jquery.bind的handler的参数问题
在一个jquery扩展插件里自定义事件
element.bind("change.tabs",function(tabName) {
element.find("li").removeClass("active");
element.find(">[data-tab='" + tabName + "']").addClass("active");
});
然后通过
element.trigger("change.tabs",firstName);
调用。不成功。
修改如下后:handler增加一个e参数
element.bind("change.tabs",function(e, tabName) {
element.find("li").removeClass("active");
element.find(">[data-tab='" + tabName + "']").addClass("active");
});
然后通过
element.trigger("change.tabs",firstName);
调用。成功。
为什么handller的参数必须有第一个参数e,而且在handler方法体内部还没有用到。
但是如果没有e这个参数则不能被trigger成功执行。
查了资料也没有找到原因,请知道的指导一下,谢谢。
------解决方案--------------------说明该事件触发时,侦听器传入两个参数,e,tabName,
你第一种写法,获得的是第一个参数,是事件对象,不是tabName,所以后面函数内代码会出错,自己写个alert测试一下不就明白了
element.bind("change.tabs",function(tabName) {
alert(tabName);//object,值其实为事件对象e
element.find("li").removeClass("active");
element.find(">[data-tab='" + tabName + "']").addClass("active");
});