在jQuery中排除嵌套在另一个div下的一个div

时间:2018-08-08 13:41:35

标签: javascript jquery html css

我必须排除在jQuery中嵌套另一个div的div。以下是我的代码,

$(document).ready(function(){
    $(".intro").not(".big").css("background-color", "yellow");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
  <body>
    <h1>Welcome to My Homepage</h1>
    <div class="intro">My name is Donald.
      <p>I live in Duckburg.</p>
      <p>My best friend is Mickey.</p>
      <div class="big">Who is your favourite:</div>
    </div>
    <ul id="choose">
      <li>Goofy</li>
      <li>Mickey</li>
      <li>Pluto</li>
    </ul>
  </body>
</html>

我尝试了.not.filter方法,但是它们不起作用。我想选择intro类而不选择big类。

5 个答案:

答案 0 :(得分:1)

尝试修改选择器:

$(document).ready(function(){
    $(".intro div:not(.big)").css("background-color", "yellow");
});

答案 1 :(得分:0)

您应在not的子级上使用.intro-

$(".intro *").not(".big")

顺便说一句,如果您只想更改背景,可以通过css-

.intro *:not('.big') {
    backgroung: yellow;
}

答案 2 :(得分:0)

我认为它正在工作。但是div位于父级中。

为什么不将.big设置为background-color: white;

答案 3 :(得分:0)

我将克隆原始的,然后从克隆中删除_gcp_gatekeeper/authenticate。然后,您可以对克隆执行任何操作。

.big

答案 4 :(得分:0)

您的div简介将div大包裹,因此,当您将背景颜色应用于intro类时,它将应用于整个块,因此您看不到结果。但是,仅使用CSS即可实现。

var intro_copy = $('.intro').clone();
intro_copy.find('.big').remove(); 
$(document).ready(function(){
    $(".intro").not(".big").css("background-color", "yellow");
});
.big{background-color: white}