JQuery:如何在DOM树中获得所有最底层的孩子?

时间:2014-08-05 03:45:01

标签: javascript jquery arrays dom

基于下面的DOM树,我希望获得所有<p>元素作为其类的message的每个div的子元素,并将它们全部放在一个数组中。这将创建一个对象数组。

注意:ul及其所有级别的所有子级都可以在任何给定时间动态添加到dom中。

我该怎么做?

我试过

    var messages = $('.rightP').find('li>.message>p');
    $.each(messages,function(){
        console.log(this);
    });

但没有运气


DOM树

<ul class="rightP">
    <li>
        <div class="sender">
            <p>David</p>
        </div>
        <div class="message">
           <p>Hello</p>
        </div>
    </li>
    <li>
        <div class="sender">
            <p>Watson</p>
        </div>
        <div class="message">
           <p>yes anything?</p>
        </div>
        <div class="message">
         ....
    </li>
    ...

</ul>

3 个答案:

答案 0 :(得分:2)

您使用了错误的jQuery选择器。将$('.rightP').('li>.message>p')替换为$('.message > p'),或者您也可以这样做。

var messages = jQuery('.message > p');

jQuery.each(messages, function (index, elem) {
    var message = jQuery(elem);
    console.log(message.text())
});

这里是working fiddle

答案 1 :(得分:0)

  

$( 'rightP。 ')(' 丽&GT; .message指p');

错误的陈述。你应该试试

  。

$( 'rightP ')发现(' 礼&GT; .message指p');

等...

答案 2 :(得分:0)

你可以得到所有像bellow

var messages = $('.rightP').find('li>.message>p');
$.each(messages,function(){
    console.log(this);
});