0

目标:.third 类中的 p 标签上没有红色轮廓。

下面的独立示例,或此处的 jsfiddle:http: //jsfiddle.net/WJVBm/

非常期待获得绿色复选标记...在此先感谢您的帮助!

<!DOCTYPE html>
<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
        var myDivs = $('div');

        var myFilteredDivs = myDivs.filter(function(){
            return $(this).closest('.third').length == 0;
        });

        var myFilteredParagraphs = myFilteredDivs.find('p'); // why does this find paragraphs in divs that have already been filtered out of the collection?

        myDivs.css('border', '1px solid #CCC');
        myFilteredDivs.css('border', '1px solid blue');
        myFilteredParagraphs.css('border', '1px solid red'); // paragraphs inside of divs that should not exist in the collection are still being outlined by a red border

    });
    </script>
    <style type="text/css">
        div { float: left; padding: 20px; margin: 5px; }
    </style>
</head>

<body>

    <div class="first">
        <p>first</p>
        <div class="second">
            <p>second</p>
            <div class="third">
                <p>third</p>
            </div>
        </div>
        <div class="second">
            <p>second2</p>
        </div>
        <div class="third">
            <p>third2</p>
        </div>
    </div>

</body>
</html>
4

2 回答 2

1

试试这个http://jsfiddle.net/3JALD/

它可能可以改进,但它似乎可以满足您的需求。

找到所有段落,myFilteredParagraphs因为div.first是 s 的一部分myFilteredDivsfind()获取所有ps 的后代div.first

于 2012-08-15T14:45:14.880 回答
1

似乎是一个非常简单,也许很明显的修复:

http://jsfiddle.net/WJVBm/13/

var myFilteredParagraphs = myFilteredDivs.find('> p'); // why does this find paragraphs in divs that have already been filtered out of the collection?

使用直接子选择器>

这是否符合您的要求?

于 2012-08-15T14:48:24.757 回答