有没有办法过滤在jQuery中没有触发事件的匹配元素?

时间:2011-12-20 15:31:09

标签: jquery jquery-selectors

我的页面上有很多带.photo类的元素。

我这样选择它们:

 $('#photos-container .photo').hover ...

有没有办法过滤掉那些没有触发悬停事件的元素?

4 个答案:

答案 0 :(得分:6)

怎么样?
$('#photos-container .photo').hover(function(e) {
  var elementsThatDidntFire = $('#photos-container .photo').not(this);
}

答案 1 :(得分:2)

使用.not过滤:

$('#photos-container .photo').hover(function() {
    $('#photos-container .photo').not(this).addClass('hover');
}, function() {
    $('#photos-container .photo').not(this).removeClass('hover');
});

代码:http://jsfiddle.net/T6xGj/5/

答案 2 :(得分:1)

$('#photos-container .photo').hover(function(e) {
    var elementsThatDidntFire = $('#photos-container .photo').filter(function() {
        return this !== e.target;
    });
}, function() {

});

http://jsfiddle.net/aUmNK/3/

答案 3 :(得分:1)

与DaDaDom的答案类似,但它会缓存元素,因此您不会在每个事件中重新选择。

var photos = $('#photos-container .photo').hover(function(e) {
  var elementsThatDidntFire = photos.not(this);
});