Как бы вы сравнили объекты jQuery?

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

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

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

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

Ответ 1

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

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

или

if ($(this).parent()[0] === $('body')[0])

Ответ 2

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

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

?

Ответ 3

Циклирование не требуется, тестирование первого первого node не требуется. Практически ничего не требуется, кроме обеспечения того, что они имеют одинаковую длину и разделяют идентичные узлы. Вот небольшой фрагмент кода. Возможно, вы захотите преобразовать это в плагин 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 {}
});

Ответ 4

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

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