循环遍历变量中的元素

时间:2011-10-23 18:54:08

标签: jquery loops

如何循环存储在'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);
});

由于

5 个答案:

答案 0 :(得分:6)

您正在尝试使用$() call

的“选择器,上下文”形式
  

jQuery(selector [,context])
   selector 包含选择器表达式
的字符串    context 要用作上下文的DOM元素,文档或jQuery

HTML字符串与context应该是的任何内容都不匹配,因此jQuery不知道如何处理您的参数并做出错误的猜测。

你可能想这样做:

$(data).filter('ul').each(function(i,v) {
    //...
});

演示:http://jsfiddle.net/ambiguous/gxGB8/

或者,如果你不是't know at what level the <ul> elements will be, wrap the HTML in a <div> and use find而不是filter

$('<div>' + data + '</div>').find('ul').each(function(i, v) {
    //...
});

演示:http://jsfiddle.net/ambiguous/tM4ua/

答案 1 :(得分:2)

.val()返回表单输入的值 它不适用于任意元素。

您需要.text().html()

编辑:要查找HTML字符串中的元素,您应该写$(html).find('ul')

答案 2 :(得分:0)

尝试从ul ul选择器中删除数据上下文范围

答案 3 :(得分:0)

试试这个:

$('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>部分。

答案 4 :(得分:0)

选中此fiddle

这可能会有所帮助!