.each通过变量内部的html

时间:2013-02-28 14:07:21

标签: javascript jquery html

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

如果我有这样的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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);                
});

答案 2 :(得分: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
});

答案 3 :(得分:-2)

尝试类似:

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

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