Проверьте, содержатся ли объекты в переменной также в другой переменной (jQuery) - PullRequest
0 голосов
/ 13 сентября 2011

Надеюсь, название несколько суммирует то, чего я пытаюсь достичь.

Допустим, у меня есть две переменные:

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');

А теперь я хочу проверить, содержатся ли объекты, содержащиеся в two , также в one . Другими словами, если в обеих переменных есть какие-либо объекты.

Мне это нужно, чтобы я мог настроить неопределяющую функцию наведения (т. Е. Потому что я добавляю встроенные цветовые стили, мне нужно ориентироваться на мои объекты разумно). Это логика, которую я придумал: (обратите внимание на 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 ]

2 голосов
/ 13 сентября 2011

Вот быстрый и грязный способ сделать это:

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');
    }
});
0 голосов
/ 13 сентября 2011

В моей книге самым чистым способом (кроме рефакторинга, чтобы по возможности избежать этих дублирующих селекторов) было бы использование merge и уникальных jQuery утилит, что-то вроде:

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

В $ unique теперь есть уникальные или, если хотите, отдельные элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...