Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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,我正在尝试实现一个函数,该函数在单击时更改元素的样式,并在取消焦点时将其删除。例如:单击element2时,它应该删除其他元素的类,并仅向单击的元素添加类 <div class="dope" id="element777"></div> <div class="dope" id="element2"></div> <div class="dope" id="element11"></div> <div class="d

我正在尝试实现一个函数,该函数在单击时更改元素的样式,并在取消焦点时将其删除。例如:单击element2时,它应该删除其他元素的类,并仅向单击的元素添加类

<div class="dope" id="element777"></div>
<div class="dope" id="element2"></div>
<div class="dope" id="element11"></div>
<div class="dope" id="element245"></div>
<div class="dope" id="element60"></div>

自动化此功能的最佳方法是什么,而不是将单击和模糊(unfocus)功能添加到所有元素?

我建议使用:focus css选择器,而不是使用javascript来执行您正在执行的操作。。。阅读更多。焦点选择器将为您解决这一问题,而不是使用单击侦听器,并在元素失去焦点时自动删除样式设置。

我建议使用:焦点css选择器,而不是使用javascript来完成您正在做的事情。。。阅读更多。焦点选择器将为您解决这一问题,而不是使用单击侦听器,并在元素失去焦点时自动删除样式设置。

如果您利用
这一功能,并且:

而不是:

$("#element1").addClass(dope2);
$("#element2").removeClass(dope);
$("#element3").removeClass(dope);
$("#element4").removeClass(dope);
它可以是:

$('.dope').click(
    function() {
        $(this).addClass(dope2).siblings().removeClass(dope);
    }
);
注意: 您是否有一个名为
dope
的变量带有类名,或者
dope
是类名?如果是类名,则需要将其加引号:
$(this.addClass('dope2')
,等等


如果要删除类
dope
,则需要添加一个可以始终用于选择这些元素的类(这样当您删除
dope
,它将继续工作)。

如果您利用
并:

而不是:

$("#element1").addClass(dope2);
$("#element2").removeClass(dope);
$("#element3").removeClass(dope);
$("#element4").removeClass(dope);
它可以是:

$('.dope').click(
    function() {
        $(this).addClass(dope2).siblings().removeClass(dope);
    }
);
注意: 您是否有一个名为
dope
的变量带有类名,或者
dope
是类名?如果是类名,则需要将其加引号:
$(this.addClass('dope2')
,等等

如果要删除类
摄影
,则需要添加一个可以始终用于选择这些元素的类(以便在删除
摄影
时,它继续工作)。

按钮部分:

$("div").click(function(){
    if($(this).hasClass("dope") || $(this).hasClass("dope2")){
        $(this).addClass("dope2");
        $(".dope").not($(this)).removeClass("dope");
    }
})
模糊部分:

$("div").blur(function(){
    if($(this).hasClass("dope") || $(this).hasClass("dope2")){
        $(this).removeClass("dope");
     }
}  
按钮部分:

$("div").click(function(){
    if($(this).hasClass("dope") || $(this).hasClass("dope2")){
        $(this).addClass("dope2");
        $(".dope").not($(this)).removeClass("dope");
    }
})
模糊部分:

$("div").blur(function(){
    if($(this).hasClass("dope") || $(this).hasClass("dope2")){
        $(this).removeClass("dope");
     }
}  

您可以在id包含单词“element”的任何div上侦听click事件,然后以其同级元素(未单击的元素,而不通过id引用它们)为目标。这可以做到:

$("div[id*='element']").click(function(){
    $(this).addClass('dope').siblings('.dope').removeClass('dope');
});

您可以在id包含单词“element”的任何div上侦听click事件,然后针对其兄弟元素(未单击的元素,而不通过id引用它们)。这或许可以做到:

$("div[id*='element']").click(function(){
    $(this).addClass('dope').siblings('.dope').removeClass('dope');
});

这不是一个输入。它的左边是聊天的按钮。请看图片:css是最容易做的事情,不需要看。但我的问题不同。当点击“其他”按钮时,它应该不聚焦。在这种情况下,我要做的是在所有元素中添加一个单一类,以便您可以轻松添加或删除其他类…我将向您展示我的意思。实际上,legolandbridge在这里有最好的解决方案。这不是输入。它的左边是聊天的按钮。请看图片:css是最容易做的事情,不需要看。但我的问题不同。当点击“其他”按钮时,它应该不聚焦。在这种情况下,我要做的是在所有元素中添加一个单一类,以便您可以轻松添加或删除其他类…我将向您展示我的意思。实际上,legolandbridge在这里有最好的解决方案。很好。完全忘记了包含选择器!我相信“开始”实际上是^。*匹配字符串中的任意位置。如果我错了,请纠正我。如果我错了,请纠正我,但它不应该是addClass('dope2')?可以是,但我认为您也应该从兄弟姐妹中删除dope2。.dope和.dope2类有何不同?事实上是否有3种状态(.dope、.dope2和no class)?是的,那么我会认为只要不点击.dope和add/remove.dope2,使用您想要的CSS规则,那么:$(this).addClass('dope2')。同胞('.dope2')。removeClass('dope2');美好的完全忘记了包含选择器!我相信“开始”实际上是^。*匹配字符串中的任意位置。如果我错了,请纠正我。如果我错了,请纠正我,但它不应该是addClass('dope2')?可以是,但我认为您也应该从兄弟姐妹中删除dope2。.dope和.dope2类有何不同?事实上是否有3种状态(.dope、.dope2和no class)?是的,那么我会认为只要不点击.dope和add/remove.dope2,使用您想要的CSS规则,那么:$(this).addClass('dope2')。同胞('.dope2')。removeClass('dope2');