首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

请问关于jquery.bind的handler的参数有关问题

2013-09-06 
请教关于jquery.bind的handler的参数问题在一个jquery扩展插件里自定义事件element.bind(change.tabs,fu

请教关于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");
});

热点排行
Bad Request.