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

UEAnswer 2013-09-04 12:49:49
在一个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成功执行。

查了资料也没有找到原因,请知道的指导一下,谢谢。
...全文
206 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
UEAnswer 2013-09-04
  • 打赏
  • 举报
回复
好的,非常感谢,我也觉得他默认会传入event参数,只是从jquery的api没有找到bind和trigger关于这方面的资料,所以上来问一下。 非常感谢,如果能有个详细的介绍就好了。
未知数 2013-09-04
  • 打赏
  • 举报
回复
说明该事件触发时,侦听器传入两个参数,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"); });

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧