2016-01-21 2 views
1

Допустим, мы имеем:Javascript JQuery цепочки

$("p")[0].innerHTML; 

и

$("p").html(); 

В приведенных выше примерах, мы имеем тот же результат. Поэтому мне было интересно, как JQuery может вернуть как нодлист, так и сам, чтобы позволить цепочку?

+1

Это потому, что селектор jQuery возвращает объект. Затем вы просто вызываете свойства этого объекта, в этом случае 'html' и' 0'. Если вы 'console.log ($ ('p')), вы увидите все перечисленные методы. –

+2

Сделайте 'console.log ($ (" p "));' и 'console.log ($ (" p ") [0]);' вы поймете. –

+0

http://stackoverflow.com/questions/7475336/how-does-jquery-chaining-work/7475375#7475375 –

ответ

2

Так что мне было интересно, как JQuery может вернуть как нодлист, так и сам, чтобы обеспечить цепочку?

Это не так.

Он только возвращает себя (это объект).

Этот объект имеет свойство 0, которое содержит первый элемент в массиве элементов. Он также имеет свойство, называемое html, которое содержит функцию.

+0

@TrueBlueAussie - это [не массив] (http://jsbin.com/fadonu/1/edit? js, console), но даже если бы это было так, ну и что? Массивы (кроме пустых массивов) имеют свойство «0». Массив - это всего лишь объект, который наследует некоторые свойства по цепочке прототипов от «Array» и предназначен для хранения данных с использованием свойств с целыми значениями в качестве их имен. – Quentin

+0

Просто проверено, и вы правы. Это мило. Это означает, что '$ (" p ") [" 0 "]. InnerHTML' также работает, который я только что тестировал, и да, он имеет свойство number для каждой записи« array ». Спасибо за этот маленький кусочек. Мое невежество уменьшилось +1 :) –

+0

Это менее волшебное, чем то, что я ожидал. Итак, если я хорошо понял, каждый элемент, который извлекается с помощью селектора, хранится как свойство с числовым индексом? – user3292788

0

, который называется плавным синтаксисом. каждая функция возвращает объект, который он задает. что-то вроде

function f(obj){ 
    doSomething(obj); 
    return obj; 
} 
Смежные вопросы