我只是在问我如何使用.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);
});
不知道该怎么做我不知道。请赐教!
答案 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);
});