jQuery CSS Selector问题

时间:2016-09-21 09:27:38

标签: jquery css jquery-selectors

在下面的代码中,jQuery运行后,我预计只有2个背景为红色。

然而,在jQuery运行之后,我可以看到1,2和3的背景为红色。

故障在哪里?

HTML

<html>
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
    <script>
        $(document).ready(function(){
            $('div').css('display','block').css('background','red');
        });
    </script> 
</head> 
<body> 
    <div style="display:none">1</div>
    <div style="display:block">2</div> 
    <div style="display:none">3</div> 
</body> 
</html> 

输出

enter image description here

6 个答案:

答案 0 :(得分:3)

.css('display','block')不是选择器,而是setter。您将display: block设置为所有divs,然后将红色background设置为全部chain。它被称为$('div') .css('display','block').css('background','red'); //^ selector ^ first setter ^ second setter

div

有很多方法可以选择正确的$("div:visible").css({display: "block", background: "red"}); $("div").filter(":visible").css({display: "block", background: "red"}); $("div[style='display:block']").css({display: "block", background: "red"}); $("div:eq(1)").css("display", "block").css({display: "block", background: "red"}); $("div").eq(1).css("display", "block").css({display: "block", background: "red"});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div style="display:none">1</div>
<div style="display:block">2</div>
<div style="display:none">3</div>
let digits = NSCharacterSet.decimalDigitCharacterSet()

答案 1 :(得分:2)

你的jquery工作正常,你先将所有div设置为block,然后将它们涂成红色。

如果您只想选择要显示的可见div,请尝试使用选择器:visible

$(document).ready(function() {
  $('div:visible').css('background', 'red');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div style="display:none">1</div>
<div style="display:block">2</div>
<div style="display:none">3</div>

答案 2 :(得分:0)

jquery代码覆盖了内联样式。设置要从脚本中显示的div。

答案 3 :(得分:0)

删除.css('display','block')

<html>
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
    <script>
        $(document).ready(function(){
            $('div:visible').css('background': 'red');
        });
    </script> 
</head> 
<body> 
    <div style="display:none">1</div>
    <div style="display:block">2</div> 
    <div style="display:none">3</div> 
</body> 
</html> 

答案 4 :(得分:0)

您正在全部选择它们,然后将显示设置为背景为红色的块我认为是这样的

$('div:visible').css('background','red');

答案 5 :(得分:0)

如果你只想看到背景为红色的2,请试试这个。

<html>
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
    <script>
        $(document).ready(function(){
            $('div').each(function(){    
                if ( $(this).css('display') == 'block')
                {
                    $(this).css('background', 'red');
                }
            });
        });
    </script> 
</head> 
<body>