#jquery #loops
#jquery #циклы
Вопрос:
Как будет перебирать HTML, хранящийся в переменной, для тегов ‘ul’? Это то, что у меня есть до сих пор, но alert() даже не срабатывает, я немного растерялся…
var data = 'HTML';
$('ul', data).each(function(i,v) {
var theTag = v.tagName;
var theElement = $(v);
var theValue = theElement.html();
alert(theTag 'n' theElement 'n' theValue);
});
Спасибо
Ответ №1:
Вы пытаетесь использовать форму $()
вызова «селектор, контекст»:
selector
jQuery( selector [, context] ) Строка, содержащая выражение селектора
контекст Элемент DOM, документ или jQuery для использования в качестве контекста
Строка HTML не соответствует ни одной из предполагаемых вещей, context
поэтому jQuery не знает, что делать с вашими аргументами, и делает неверное предположение.
Вероятно, вы хотите сделать это так:
$(data).filter('ul').each(function(i,v) {
//...
});
Демо-версия: http://jsfiddle.net/ambiguous/gxGB8 /
Или, если вы не знаете, на каком уровне <ul>
будут элементы, оберните HTML в a <div>
и используйте find
вместо filter
:
$('<div>' data '</div>').find('ul').each(function(i, v) {
//...
});
Демонстрация: http://jsfiddle.net/ambiguous/tM4ua /
Ответ №2:
.val()
возвращает значение ввода формы.
Это не работает с произвольными элементами.
Вы хотите .text()
или .html()
.
РЕДАКТИРОВАТЬ: чтобы найти элементы в строке HTML, вы должны написать $(html).find('ul')
Комментарии:
1. Спасибо, но это все равно не работает. Предупреждение даже не срабатывает.
Ответ №3:
Попробуйте удалить область контекста данных из вашего селектора ul
Комментарии:
1. Если бы я это сделал, он бы перебирал документ, а не переменную.
Ответ №4:
Попробуйте это:
$('ul').each(function() {
// Gets underlying element object
var theElement = $(this).get(0);
var theTag = theElement.tagName;
// Can also use .text() if you want just the textual content
var theValue = $(this).html();
// theElement can't be printed, it's an object
alert(theTag 'n' theValue);
});
Я предполагаю, что здесь вам нужно содержимое нескольких <ul>
тегов, а не <li>
части одного списка.
Комментарии:
1. Кстати, если он не попадает в предупреждение, откройте Firebug или аналогичный — у вас, вероятно, ошибка JS.
2. Я пытаюсь перебирать элементы из переменной, а не из самого документа, возможно ли это? У меня нет ошибок в консоли Firebug, кажется, я не могу найти элементы из переменной. Спасибо
Ответ №5:
Проверьте эту скрипку
Это может помочь!