Jquery:元素数组的事件监听器

我使用.each()方法和$(this)选择器使用元素填充数组。

 (function($){ var elements = new Array(); var index = 0; $("img").each(function() { if($(this).attr("attribute")){ $(this).attr("imageIndex", index); elements[index] = $(this); index++; } }); }(jQuery)); 

我想在我的代码中添加一个事件监听器,当单击该数组中的任何元素时执行该监听器。

例如:

 $(elements).click = function(){ console.log("success"); } 

我想onclick属性可以在每个图像循环时改变,但这看起来有点不合适。 在我实施之前,我想确定这是我的最后手段。

不需要数组,您可以使用元素选择器和has属性选择器来获取具有给定属性的所有图像元素,然后使用.click()来注册事件处理程序

 $("img[attribute]").click(function(){ //do your stuff }) 

使用逗号分隔的选择器列表,用引号括起来,如下所示:

 $('#id, .selector, .somethingElse').click(function() { //your handler }); 

不需要在数组中存储对象,您可以通过这种方式获取当前事件

  

当你点击任何图像元素时,你将获得函数“Event.target”中的当前事件目标,或者也可以这样使用$(Event.target).fun({…});

使用jQuery的map函数将数组元素连接到一个组合的jQuery对象中。
然后将jQuery事件附加到此对象(在此示例中使用“on()”)。

 var elements = [$('#blah'), $('#blup'), $('#gaga')]; //basically what you are starting with var combiObj = $.map(elements, function(el){return el.get()}); $(combiObj).on('click', function(ev){ console.log('EVENT TRIGGERED'); }); 
 button{ display: block; margin: 10px; }