Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 取决于样式的条件_Javascript_Jquery - Fatal编程技术网

Javascript 取决于样式的条件

Javascript 取决于样式的条件,javascript,jquery,Javascript,Jquery,我试图让一个条件语句工作,它只在某些元素具有特定的内联css样式时运行 HTML <div> <div class="box">1</div> <div class="box">2</div> <div class="box">3</div> <div class="box">4</div> </div> 因此,当单击一个框时,它的同级将淡入

我试图让一个条件语句工作,它只在某些元素具有特定的内联css样式时运行

HTML

<div>
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
</div>

因此,当单击一个框时,它的同级将淡入
opacity:0.4,但我不希望淡入淡出功能再次运行,只要任何一个框具有该不透明度。谢谢。

虽然完全可以使用jquery创建自定义过滤器并测试其中的不透明度css属性,但我强烈建议您更改设计,并说创建新的css类,如

 .glass { 
    opacity: 0.4;
 }
并应用该类,而不是内联属性或与其一起应用

然后

从所有图元中筛选图元子集

否则,请使用具有以下功能的过滤器:

 $( "div" ).filter(function( index ) {
     return $( this ).css('opacity') == "0.4";
 })

通常,在条件中添加事件处理程序不是您想要的。相反,始终绑定处理程序,然后检查处理程序内部的条件。不过,在这种情况下,我认为实际上根本不需要条件。我想你在找这样的东西:


我同意使用类的答案。然而,为了解释为什么你的不起作用。。。您的
if
将始终计算为true,因为
filter
(即使为空)始终返回jquery对象。物体是“真实的”。相反,您需要
.length
来检查筛选器是否返回任何内容。最重要的是,您的过滤条件是向后的,因为您希望确保所有元素都不具有该不透明度,而是检查任何元素都不具有该不透明度。此外,您的数字不匹配
0.4
0.3
,最后,您的if在您的点击之外,应该在里面

使用您的方法并仅修复错误,您将得到如下结果:


同样,不要使用此解决方案,请使用一个类使用其他答案之一。我只是觉得有必要解释一下你的代码出了什么问题。

这似乎是你应用程序的一种比较隐蔽的方式,它将功能与风格联系起来。几乎可以肯定有更好的方法。在淡出时添加一个类怎么样?是的,就像isherwood提到的,也许使用.addClass(className)和.removeClass([className])会是一个更好的选择。你可以用.hasClass(className)检查一个类,然后根据需要添加或删除fade类。是的,这就是我最初要做的,我只是不确定这是否是最有效的方法。谢谢你的解释,我现在就用class方法。
selector.filter('.glass')
 $( "div" ).filter(function( index ) {
     return $( this ).css('opacity') == "0.4";
 })
$('.box').on('click', function() {
    $(this).removeClass('faded').siblings('.box').addClass('faded');
});
$('.box').on('click', function(){
    if($('.box').filter( function(){
        return $(this).css('opacity') === "0.4";
    }).length === 0 )  {

        $(this).siblings('.box').css("opacity", "0.4")

    }
});