循环遍历变量中的元素
如何循环存储在’ul’标签的变量中的HTML? 这是我到目前为止,但警报()甚至没有触发,我有点迷失…
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); });
谢谢
您正在尝试使用$()
调用的“selector,context”forms:
jQuery(selector [,context])
selector包含选择器表达式的字符串
context用作上下文的DOM元素,Document或jQuery
HTML字符串与context
应该是的任何内容都不匹配,因此jQuery不知道如何处理您的参数并做出错误的猜测。
你可能想这样做:
$(data).filter('ul').each(function(i,v) { //... });
演示: http : //jsfiddle.net/ambiguous/gxGB8/
或者,如果您不知道
元素的级别,请将HTML包装在
并使用 find
而不是filter
:
$('' + data + '').find('ul').each(function(i, v) { //... });
演示: http : //jsfiddle.net/ambiguous/tM4ua/
.val()
返回表单输入的值。
它不适用于任意元素。
你想要.text()
或.html()
。
编辑 :要在HTML字符串中查找元素,您应该写$(html).find('ul')
尝试从ul选择器中删除数据上下文范围
试试这个:
$('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); });
我在这里假设你想要一些
标签的内容,而不是单个列表的
部分。
检查这个小提琴
它可以帮助!