Я пытаюсь получить html элементов «li» и предупредить их как строку.Какой объект возвращает селектор jQuery?
HTML:
<ul>
<li>lorem ipsum dolor <span>sit</span> amet 1</li>
<li>lorem ipsum dolor <span>sit</span> amet 2</li>
<li>lorem ipsum dolor <span>sit</span> amet 3</li>
<li>lorem ipsum dolor <span>sit</span> amet 4</li>
<li>lorem ipsum dolor <span>sit</span> amet 5</li>
<li>lorem ipsum dolor <span>sit</span> amet 6</li>
</ul>
<p id="greeting">Hello <strong>World</strong>!</p>
Javascript:
$(document).ready(function(e){
var list = $("li");
var greeting = $("#greeting");
var content ="";
for(var i=0, len = list.length; i<len; i++) {
content += $(list[i]).html();
//why do I have to use the $ here instead of just doing list[i].html()
//content += list[i].html(); why does this not work?
}
alert(content);
alert(greeting.html()); //why does this work without the $ ?
});
Я сделал некоторые исследования и поняли, что JQuery селекторы возвращают DOM элементы, завернутые в объекты JQuery, так что мы можем применить методы JQuery на нем, но почему линия greeting.html() работает нормально без $?
TypeError: список [я] .html не является функцией
почему я получаю эту ошибку, когда я делаю список [я] .html вместо $ (список [я]) HTML().?
Вот fiddle.
приветствие возвращает объект JQuery со всеми его функциями. list также возвращает объект JQuery, но поскольку вы использовали селектор «li», он имеет несколько html DOM. с li [i] вы теперь берете единственный html DOM, без объекта JQuery. Вот почему вам нужно использовать $ (li [i]), чтобы получить функции JQuery. – Danmoreng