2013-05-19 34 views
29

獲得所有元素在學習javscript和jquery的過程中,經歷了谷歌的頁面,但似乎無法得到這個工作。基本上我試圖收集innerhtml的類,jquery似乎被建議比普通的javascript,成document.write。JQuery通過類名

這是目前爲止的代碼;

<div class="mbox">Block One</div> 
<div class="mbox">Block Two</div> 
<div class="mbox">Block Three</div> 
<div class="mbox">Block Four</div> 

<script> 
var mvar = $('.mbox').html(); 
document.write(mvar); 
</script> 

這樣,只有第一個類顯示在document.write下。我怎麼能像Block OneBlock TwoBlock Three一起展示它?我的最終目標是向他們展示逗號,如第一座第二座第三座第四座。謝謝,一堆相關的問題出現了,但沒有一個看起來很簡單。

+1

使用'不推薦document.write'。 –

回答

41

一種可能的方式是使用.map()方法:

var all = $(".mbox").map(function() { 
    return this.innerHTML; 
}).get(); 

console.log(all.join()); 

DEMO:http://jsfiddle.net/Y4bHh/

N.B.請不要使用document.write。出於測試目的,console.log是最好的選擇。

29

也許不像已經發布的解決方案那樣乾淨或高效,但.each()函數怎麼樣? E.g:

var mvar = ""; 
$(".mbox").each(function() { 
    console.log($(this).html()); 
    mvar += $(this).html(); 
}); 
console.log(mvar); 
+0

我會說這是規範的答案(以及'each'的預期用例) – Samveen

1

替代解決方案(你可以用自己的元素取代的createElement)

var mvar = $('.mbox').wrapAll(document.createElement('div')).closest('div').text(); 
console.log(mvar); 
2

你只得到了第一個通過選擇返回四個條目。下面

代碼作爲小提琴:http://jsfiddle.net/7pUa3/

我想過於明顯,你有相匹配的是選擇,所以你需要處理每一個明確的四個項目。與使用map的回答相比,使用eq()更明確一點,但mapeach是您可能使用的「現實生活中」(jquery docs for eq here)。

<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script> 
    </head> 

    <body> 
     <div class="mbox">Block One</div> 
     <div class="mbox">Block Two</div> 
     <div class="mbox">Block Three</div> 
     <div class="mbox">Block Four</div> 

     <div id="outige"></div> 
     <script> 
      // using the $ prefix to use the "jQuery wrapped var" convention 
      var i, $mvar = $('.mbox'); 

      // convenience method to display unprocessed html on the same page 
      function logit(string) 
      { 
       var text = document.createTextNode(string); 
       $('#outige').append(text); 
       $('#outige').append("<br>"); 
      } 

      logit($mvar.length); 

      for (i=0; i<$mvar.length; i++) { 
       logit($mvar.eq(i).html()); 
      } 
     </script> 
    </body> 

</html> 

logit調用輸出(後的初始4 div的顯示器):

4 
Block One 
Block Two 
Block Three 
Block Four