2012-03-30 3 views
7

Есть ли разница между следующими селекторами:родителя против ParentNode

var index = $(this).parent().index(); 
var index2 = $(this.parentNode).index(); 

Из того, что я прочитал, ParentNode широко поддерживается.

Есть ли причина использовать один над другим?

ответ

7

Селектор jQuery .parent() выбирает непосредственного родителя всех узлов в наборе узлов. Однако, поскольку в вашем примере набор узлов - это всего лишь один узел $(this), практических различий мало.

Это различие имеет значение, если вы должны были сделать что-то вроде $(".foo").parent(), где может быть много узлов, которые имеют класс foo.

2

parentNode является родным JS, где parent() не является.

Что вы делаете в своем коде, это обертывание элементов DOM в объекте jQuery, чтобы вы могли называть его jQuery. Таким образом, вы не можете вызвать index() только для this.parentNode, но вы можете вызывать его на $ (this.parentNode) .index(), поскольку он имеет, чем стать объектом jQuery.

Ваш первый пример обертывает текущий элемент DOM как объект jQuery и использует метод parent() jQuery для извлечения его родителя и индекса этого родителя. Второй пример напрямую напрямую переносит родительский элемент.

+1

Если это широко поддерживается, какая разница в этой ситуации? – r0m4n

Смежные вопросы