在一个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成功执行。查了资料也没有找到原因,请知道的指导一下,谢谢。

解决方案 »

  1.   

    说明该事件触发时,侦听器传入两个参数,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");
    });
      

  2.   

    好的,非常感谢,我也觉得他默认会传入event参数,只是从jquery的api没有找到bind和trigger关于这方面的资料,所以上来问一下。非常感谢,如果能有个详细的介绍就好了。