仅当当前迭代不是悬停元素时才执行每个函数

时间:2013-03-09 11:29:30

标签: jquery

我希望我的代码可以为自己说话。

当我将鼠标悬停在元素上时,我想在同一个类的所有元素上运行每个函数,但不是当前悬停的元素:

$(document).on({
mouseenter: function () {
    $('#%id% .imageStyle').each(function(){
        if($(this) != $(this)){ // obviously this line is incorrect
        // I only want to execute this if the current each iteration is not the element I am hovering over
            $.this.pixastic("desaturate");
        }
    });
    Pixastic.revert(this);
},

mouseleave: function () {
    $(this).pixastic("desaturate");
}
}, '#%id% .imageStyle');

更新,这个新代码完成了我现在想要的......

$(".%id%desaturate img").addClass("sprightly");


$(document).on({
mouseenter: function () {
    $('.sprightly').not(this).each(function(){
        if($(this).is("img")){
            $(this).trigger("mouseleave");
        }
    });
    Pixastic.revert(this);
},

mouseleave: function () {
    $(this).pixastic("desaturate");
}
}, '#%id% .imageStyle');

1 个答案:

答案 0 :(得分:2)

<强>更新

不需要使用每个函数,因为.pixastic()将适用于选择器匹配的所有元素。试试这个,我还没有测试过它

$("#container").on({
mouseenter: function () {
    $('#container .imageStyle').not(this).pixastic("desaturate");
    Pixastic.revert(this);
},

mouseleave: function () {
    $(this).pixastic("desaturate");
}
}, '.imageStyle');