2013-02-28 59 views
1

他我只是問如何使用.each當我的HTML是在java腳本變量內,而不是在DOM本身。。每個槽內html變量

如果我有HTML這樣的:

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

我可以這樣做:

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

它只是給一個警告3次告訴德澤,對此,死亡。 現在我想要做同樣的事情,然後用html裏面的變量。不知道如何這是我的僞代碼:

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

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

不知道如何做到這我不知道。請賜教!

+1

你的HTML變量是無效的。你使用每一個都是無效的。 – epascarello 2013-02-28 14:10:08

+0

還有一個話題有很好的迴應。 參見[主題#1] [1] [1]:http://stackoverflow.com/questions/3153940/jquery-each-with-string – JoDev 2013-02-28 14:11:58

回答

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 
}); 
+0

這看起來不錯,很好,很短! – botenvouwer 2013-02-28 14:18:58

+0

是的,它的工作原理,謝謝你看起來不錯。 – botenvouwer 2013-02-28 14:20:33

+1

爲什麼在這個世界上你有一個get(0)?它沒有任何幫助。 – epascarello 2013-02-28 14:28:37

-2

試着這麼做:

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

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

+0

你嘗試了嗎?你將不會收到警報。 – epascarello 2013-02-28 14:10:57

+0

@Ayman Safadi - 不工作的人。 – uvinod 2013-02-28 14:12:34

+0

我的壞...現在試試。 'filter',而不是'find'。 – 2013-02-28 14:13:55

2

嘗試了這一點,以你的毒鉤解析成一些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

+0

我喜歡你的答案,.filter適合我,但要知道如何使用html裏面的變量很方便,謝謝。 – botenvouwer 2013-02-28 14:40:00

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);     
});