Проблема в том, что value
является объектом Element, а не объектом jQuery, поэтому вы вызываете собственный метод append()
, а не jQuery. Чтобы это исправить, сначала преобразуйте value
в jQuery объект:
$(function() {
var liNodes = $("li");
liNodes.each(function(index, value) {
var span = $("<span>Foo</span>");
$(value).append(span);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
Или создайте объект span
Element и используйте appendChild()
для value
:
$(function() {
var liNodes = $("li");
liNodes.each(function(index, value) {
var span = document.createElement('span');
span.innerText = 'Foo';
value.appendChild(span);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
С учетом всего вышесказанного учтите, что если вы хотите создать идентичный элемент во всех li
, то вам не понадобится al oop в все, это одна строка:
$('li').append('<span>Foo</span>');