将事件附加到数组的每个元素

时间:2013-11-29 11:19:50

标签: javascript jquery

我已经制作了几个图标,并且在他们的鼠标悬停时他们应该做点什么。现在,我已经创建了一个我的图标数组,但是当我将每个()应用到集合时,它不起作用:

所以我需要以下代码块来将悬停事件附加到集合的每个元素。

var icon_set = new Array('.icon-online', '.icon-save', '.icon-sms',
    '.icon-access', '.icon-support');
icon_set.each(function () {
    $(this).mouseleave(function () {
        img.stop().fadeOut();
    });
});

4 个答案:

答案 0 :(得分:5)

尝试Array.join()

var icon_set = new Array('.icon-online', '.icon-save', '.icon-sms',
    '.icon-access', '.icon-support');
$(icon_set.join()).mouseleave(function () {
    img.stop().fadeOut();
});

<小时/> icon_set.each(function () { - &gt; .each()不适用于数组

使用jQuery.each()array.forEach(callback[, thisArg])作为数组。

答案 1 :(得分:4)

icon_set是原始JavaScript Array。它没有each方法。使用Array.prototype.forEach$.each并使用$();

包装每个数组元素
icon_set.forEach(function (el) {
    $(el).mouseleave(function () {
        $(this).stop().fadeOut();
    });
});

$.each(icon_set, function(index, el) {
  $(el).mouseleave(function () {
    $(this).stop().fadeOut();
  });
});

并且更喜欢在[]构造函数上使用数组文字语法(Array

['.icon-online', '.icon-save', 
 '.icon-sms','.icon-access', '.icon-support'].forEach(yourMouseleaveHandler);

答案 2 :(得分:1)

如果您的所有图标都有以icon-开头的类名,则可以使用此Jquery Starts With Selector

$('*[className^="icon-"]').mouseleave(function() {
    // Do something
});

PS:它将选择以icon-开头的所有图标。这取决于你可能/可能不想要那样。

答案 3 :(得分:0)

作为替代方案,为什么不给那些图像赋予所有相同的类,然后你的选择器变得更加简单,即对于myImgs的新类。

$('.myImgs').mouseleave(function() {
     $(this).stop().fadeOut();
});