Как бы вы сравнили объекты jQuery? - PullRequest
100 голосов
/ 13 марта 2010

Итак, я пытаюсь выяснить, как сравнить два объекта jQuery, чтобы увидеть, является ли родительский элемент телом страницы.

вот что у меня есть:

if ( $(this).parent() === $('body') ) ...

Я знаю, что это неправильно, но если кто-то понимает, к чему я клоню, могут ли они указать мне правильный способ сделать это?

Ответы [ 4 ]

157 голосов
/ 13 марта 2010

Вам необходимо сравнить необработанные элементы DOM, например:

if ($(this).parent().get(0) === $('body').get(0))

или

if ($(this).parent()[0] === $('body')[0])
59 голосов
/ 13 марта 2010

Почему бы и нет:

if ($(this).parent().is("body")) {
  ...
}

18 голосов
/ 04 октября 2010

Цикл не требуется, тестирование одного первого узла не требуется. Практически ничего не требуется, кроме того, что они одинаковой длины и имеют одинаковые узлы. Вот небольшой фрагмент кода. Возможно, вы даже захотите преобразовать это в плагин jquery для собственных нужд.

jQuery(function($) {
  // Two separate jQuery references
  var divs = $("div");
  var divs2 = $("div");

  // They are equal
  if (divs.length == divs2.length && divs.length == divs.filter(divs2).length) {         

  // They are not
  } else {}
});
2 голосов
/ 23 августа 2012

Я наткнулся на эти ответы и подумал, какой из них лучше. Все зависит от ваших потребностей, но проще всего набирать, читать и выполнять, конечно. Вот тестовый тест, который я сделал, чтобы принять решение.

http://jsperf.com/jquery-objects-comparison

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