gpt4 book ai didi

javascript - 在 jQuery 中一次只能有一个元素是 "toggleClass"-ed

转载 作者:行者123 更新时间:2023-11-30 09:47:59 24 4
gpt4 key购买 nike

我如何能够在元素上切换类,但一次只能“切换”一个。有解决方案(通过添加另一个 for 循环来禁用效果),但在 pureJS 中,我需要帮助才能在 jQuery 中完成这项工作。

var elements = document.querySelectorAll("#box");

for ( var i = 0; i < elements.length; i++ ) (function(i){
elements[i].onclick = function() {
for (var j = 0; j < elements.length; j++) {
elements[j].style.border = '';
elements[j].innerHTML = '';
}
elements[i].style.border = "10px solid red";
elements[i].innerHTML = "selected";
};
})(i);
body {background-color: black;}
#box {
background: white;
color: red;
text-align: center;
box-sizing: border-box;
width: 100px;
height: 100px;
display: block;
float: left;
margin: 1%;
}
#box.red{
background: red;
}
<body>
<div id="box"></div>
<div id="box"></div>
<div id="box"></div>
<div id="box"></div>
</body>

这是 jQuery 函数。简而言之,我需要一次只有一个框可以是红色的,当单击另一个框时,它会禁用所选的框。与上面的 javascript 完全相同。

$("div#box").click(function(){
$(this).toggleClass("red");
});
body {background-color: black;}
#box {
background: white;
color: red;
text-align: center;
box-sizing: border-box;
width: 100px;
height: 100px;
display: block;
float: left;
margin: 1%;
}
#box.red{
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div id="box"></div>
<div id="box"></div>
<div id="box"></div>
<div id="box"></div>

</body>

最佳答案

执行此操作的通常方法是在将类应用于新选择的类之前删除所有其他可能的“切换”上的类,如下所示:

var boxes = $('div.box');

boxes.click(function(){
boxes.removeClass('red');
$(this).addClass('red');
});

(每当您有多个元素要应用它时,您都应该使用类,而不是 ID(所以我使用了 .box,而不是 #box).

另一个重要的一点是仅选择框一次,并将它们存储在单击处理程序外部的变量中。这样,您就不必每次点击时都重新选择它们。

关于javascript - 在 jQuery 中一次只能有一个元素是 "toggleClass"-ed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com