正文 925字数 524,645阅读


关于一个对象绑定多个事件的方法之前转载过一篇文章,讲这方面的文章也比较多,但是在多个对象上绑定同一事件的问题困扰了我许久,今天终于找到了解决方案,两中方法都是基于JQuery实现的:

方法一:

首先获取三个要绑定事件的对象,
var a = $("#a"), b = $("#b"),c = $("#c");
Run code
Cut to clipboard


    用JQuery的add方法实现:
    a.add(b).add(c).bind("event",function(e,data){ alert("bind success");});
    Run code
    Cut to clipboard


      当然事先你应该trigger一个“event”事件.这里可以用click事件测试而无须trigger:

      a.add(b).add(c).click(function () { alert("test"); };
      Run code
      Cut to clipboard


        add方法描述: 添加一个新元素到一组匹配的元素中,并且这个新元素能匹配给定的表达式。

        方法二:

        通过JQuery的each方法遍历添加,将事件绑定在所有被遍历的对象上:

        $("div").each(function(){ $(this).click(function(){alert('test');}); });
        Run code
        Cut to clipboard


          each方法描述:以每一个匹配的元素作为上下文来执行一个函数。

          当然除了以上两种方法也可以使用原始的循环方法进行多对象绑定,创建一个对象数组然后循环添加,原理其实和方法一差不多:
          var array = [a,b,c]; for(var i=0;i<array.length;i++) { array[i].bind("event",function(e,data){ alert("bind success");)});
          Run code
          Cut to clipboard