Javascript 如何使用此JS函数删除类
此函数的设置使其只需在菜单选项集中的类中查找-a,并在单击时表示,添加“已选定”类,并从该列表中的所有其他类中删除“已选定”类 我想做的是简单地拥有它,因此如果您单击已经具有“selected”类的项,那么它将删除“selected”类。我知道它不应该是“returnfalse”;我只是把它作为占位符,因为我无法找出正确的编码 谢谢大家!:)Javascript 如何使用此JS函数删除类,javascript,jquery,Javascript,Jquery,此函数的设置使其只需在菜单选项集中的类中查找-a,并在单击时表示,添加“已选定”类,并从该列表中的所有其他类中删除“已选定”类 我想做的是简单地拥有它,因此如果您单击已经具有“selected”类的项,那么它将删除“selected”类。我知道它不应该是“returnfalse”;我只是把它作为占位符,因为我无法找出正确的编码 谢谢大家!:) 您应该能够使用$().removeClass('selected'),即 if ( $this.hasClass('selected') ) {
您应该能够使用
$().removeClass('selected')
,即
if ( $this.hasClass('selected') ) {
$this.removeClass('selected');
}
但是,您也将在稍后再次添加该类,因此实际上不需要这样做
您可以通过选择所有.selected
元素、删除this
并删除类来内联此
$this
.parents('.menu-option-set')
.find('.selected')
.not(this)
.removeClass('selected');
$(this).addClass('selected');
或者,使用以下方法:
var $optionSets = $('.menu-option-set'),
$optionLinks = $optionSets.find('a');
$optionLinks.click(function() {
var $this = $(this);
var $optionSet = $this.parents('.menu-option-set');
$optionSet.find('.selected').not(this).removeClass('selected');
$this.toggleClass('selected');
});
编辑:添加了
.not(this)
,以排除单击的
在应删除类之前将其删除。如果您希望简洁:
$('.menu-option-set a').click(function()
{
// if clicked item is selected then deselect it
if ($(this).hasClass('selected'))
{
$(this).removeClass('selected');
}
// otherwise deselect all and select just this one
else
{
$('.menu-option-set a').removeClass('selected');
$(this).addClass('selected');
}
});
$('.menu-option-set a').click(function() {
$(this).toggleClass('selected').siblings().removeClass('selected');
});
我就是这么想的,一开始我试过,但没用。只是将该代码替换为“return false”;它不起作用,除非“if”所在的顺序改变了它?您如何确定该类没有被删除?这个类总是在函数的末尾被再次添加。我理解你现在所说的。对不起,弗莱姆把它打到了应该去的地方,这正是你说的,我只是把它放错地方了,没有意识到。对不起,非常感谢你的帮助!我想这会起作用,这是我尝试的第一件事,奇怪的是,我无法让它起作用,不知道为什么。我有完全相同的代码。啊,刚刚意识到为什么它不起作用。因为您的
.find('.selected')
将包括单击的
,如果它已经被选中,那么您将删除它上面的类,并且.toggleClass()
将重新添加它。我无法让它工作,它一定是非常小的东西,不允许它工作。@flem的回答很好。不过我真的很感谢你的帮助。我真的认为开关会更方便,但我没有它的工作。再次感谢!:)非常感谢。这很有效。这一页上有很多建议,但这是最好的方式吗?或者我应该尝试使用toggle类,因为这是我最终要做的事情?非常感谢@用户1248672。使用toggle类不允许配置其他元素。您可能会保存一行代码,但它不会那么容易阅读(在我看来)。没有这样的“最佳方式”。两者都很好。
$('.menu-option-set a').click(function() {
$(this).toggleClass('selected').siblings().removeClass('selected');
});