在jquery中访问子元素

时间:2012-06-01 08:48:35

标签: javascript jquery

<div id="main">
 <div id="1">
   <div>contents..</div>
   <div>contents..</div>
 </div>
 <div id="2">
   <div>contents..</div>
   <div>contents..</div>
 </div>
 <div id="3">
   <div>contents..</div>
   <div>contents..</div>
 </div>
</div>

如何将所有div object访问到具有contents in there innerHTML的单个数组?

修改

好的我试过了:

var totaldiv = $("#main").children();
var totalElements = [];
var c = 0;
$.each(totaldiv, function (i, v) {
    $(totaldiv[i]).children().each(function () {
        totalElements[c++] = $(this);
    });
});

有没有更有效的方法来做到这一点?

4 个答案:

答案 0 :(得分:3)

您有.filter()

var divArr = $('#main div > div').filter(function() {
    return $(this).html();  // return those div not empty, has text or html element
});

<强> DEMO

答案 1 :(得分:0)

您可能希望排除更高级别的元素 - 如果您自己使用.text(),您将获得包含文本的任何位置的所有元素,而不仅仅是在子元素中节点:

var haveContent = $('div').filter(function() {
    return $(this).children().length === 0 && $.trim($(this).text()) !== '';
}).get();

http://jsfiddle.net/alnitak/WNKLA/

演示

答案 2 :(得分:0)

最基本的是,以下内容符合您的上述示例:

$('#main div div');

假设有div元素可能没有任何文本内容,您可以试试这个:

$('#main div div').contents().filter(function(){ return this.length > 0; }) 

答案 3 :(得分:0)

您可以使用.contents()访问innerhtml中的所有div内容..

var arry = $('div:contains(contents)');

检查此链接;

http://api.jquery.com/contains-selector/

https://developer.mozilla.org/en/nodeType

并检查一下..这与你的问题类似

Jquery: Checking to see if div contains text, then action