我怎样才能jQuery选择一个子div元素?

时间:2014-09-02 16:05:22

标签: jquery jquery-selectors

我想根据' id'选择一个页面元素。父母,加上“班级”#39;其中一个孩子。这在子元素是span元素时有效,但在它是div时失败。

如何选择下面的特定 #testDiv .highlightme 项?

<script>  
        $(document).ready(function(){  
        $('#testSPAN .highlightme').css("background-color","yellow");  
        $('#testDIV  .highlightme').css("background-color","blue");  
    });  
</script>  



<p id="testSPAN">
    <span class="highlightme">
        This should highlight, and does. Good.
    </span>
</p>

<p id="testDIV">
    <div class="highlightme">
        This should highlight, but doesn't because it's in a div.
    </div>
</p>

3 个答案:

答案 0 :(得分:3)

p标记仅采用内联元素,而不采用其他块。 http://www.w3.org/TR/html401/struct/text.html#edef-P “P元素代表一个段落。它不能包含块级元素(包括P本身)。”

这是您问题的核心,它是无效的HTML。

答案 1 :(得分:0)

无论是div还是span,都无关紧要。您可以将类元素归因于任何标记。

问题不在于您的jquery代码,而是将div元素包装在p中 它不允许在HTML中! :)

答案 2 :(得分:0)

这里已经说过,这是真的,你不应该把块元素放在内联元素中,但是如果你不能修改html或者你不被允许,这里有一点工作会为你工作......

$(document).ready(function(){
    $('[id*="test"]').each(function() {
        var bgcolor = "yellow";
        if ($(this).children('[class="highlightme"]')   ) {
            $(this).children('[class="highlightme"]').css('background-color', bgcolor);
        }
        if ($(this).next().hasClass("highlightme") == true) {
            $(this).next().attr('class', 'highlightme').css('background-color', bgcolor);
        }
    });
});

我希望这段代码可以帮助你,如果你还需要其他东西,请告诉我;)