检查变量中的对象是否也包含在另一个变量中(jQuery)

时间:2011-09-13 12:45:01

标签: javascript jquery variables

我希望这个标题能够总结我想要实现的目标。

假设我有两个变量:

var one = $('div.foo, div.faa, div.fee, span, a, .all-sorts-of-objects'),
    two = $('div.fii, div.foo, span, .all-sorts-of-objects-two');

现在,我想检查两个中包含的对象是否也包含在一个中。换句话说,如果两个变量中都有任何对象。

我需要这个,以便我可以设置一个非重写的悬停功能(即因为我添加了内联颜色样式,我需要明智地定位我的对象)。这是我提出的逻辑:(注意 if(one == two),这本质上是我的问题)。

one.hover(function() {
    if(one == two) { // if there is one or more objects in both variables..
       $(this).css('color', 'red');
    } else {
       $(this).css('color', 'blue');
    } 
}, function() {
    // ...
});

我希望我已经足够清楚了。如果没有,请告诉我,我会尽力解释这一点。

非常感谢!

2 个答案:

答案 0 :(得分:2)

这是一种快速而肮脏的方法:

var one = $('div.foo, div.faa, div.fee, span, a, .all-sorts-of-objects').addClass('one');
var two = $('div.fii, div.foo, span, .all-sorts-of-objects-two').addClass('two');

one.hover(function() {
    if(one.hasClass('two')) {
       $(this.css('color', 'red');
    }
});

答案 1 :(得分:0)

在我的书中,最简洁的方法(除了重构以避免这些重复选择器,如果可能)将使用mergeunique jQuery实用程序,如:

var $merged = $.merge(one, two);
var $unique = $.unique($merged.get());

$ unique现在具有独特的,或者,如果您愿意,还有不同的元素。