1

他我只是问当我的 html 在 java-script 变量中而不是在 DOM 本身中时如何使用 .each 。

如果我有这样的html:

<html>
    <h1>deze</h1>
    <h1>this</h1>
    <h1>dies</h1>
</html>

我可以:

$('h1').each(function(){
    var test = $(this).html();
    alert(test);                
});

它只会发出 3 次警报,告诉 deze,这个,死了。现在我想做同样的事情,但是在变量中使用 html。不知道这是我的伪代码:

var html = '
           <h1>deze</h1>
           <h1>this</h1>
           <h1>dies</h1>
           ';

$(html).each('h1', function(){
    var test = $(this).html();
    alert(test);                
});

不知道该怎么做,我不知道。请赐教!

4

4 回答 4

2

试试这个,首先将你的 sting 解析成一些 DOM 节点: http ://api.jquery.com/jQuery.parseHTML/

var html = '<div>\
           <h1>deze</h1>\
           <h1>this</h1>\
           <h1>dies</h1>\
           </div>';
var test = $.parseHTML(html);

$('h1',test).each(function(){
    var test = $(this).html();
    alert(test);                
});

这里的例子:http: //jsfiddle.net/cnWqQ/3/

另外,在您的问题中,我注意到您的 html 变量不会像在多行中键入的方式那样解析为变量。

使用此方法时要注意的一件事是,如果您要搜索的元素位于顶层,它将不起作用。为避免这种情况,只需将字符串包装在 div 中。有关这方面的更多信息,请参见此处: http: //fredwu.me/post/554746690/jquery-tip-traverse-parse-html-string

于 2013-02-28T14:10:17.750 回答
1
var html = '\
           <h1>deze</h1>\
           <h1>this</h1>\
           <h1>dies</h1>\
           ';

$("<div/>").html(html).find("h1").each(function(){
    var test = $(this).html();
    alert(test);                
});


$(html).filter("h1").each(function(){
    var test = $(this).html();
    alert(test);                
});
于 2013-02-28T14:12:00.660 回答
1

LIVE DEMO

var html = '<h1>deze</h1>'+
           '<h1>this</h1>'+
           '<h1>dies</h1>';

$(html).filter(function(){
    var test = $(this).html();
    alert(test);                          // deze // this // dies
});
于 2013-02-28T14:15:41.437 回答
-2

尝试类似:

$(html).filter('h1').each(function(){
    var test = $(this).html();
    alert(test);                
});

小提琴:http: //jsfiddle.net/m7f3F/

于 2013-02-28T14:09:24.343 回答