2013-05-19 35 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