Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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 如何使用此JS函数删除类_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用此JS函数删除类

Javascript 如何使用此JS函数删除类,javascript,jquery,Javascript,Jquery,此函数的设置使其只需在菜单选项集中的类中查找-a,并在单击时表示,添加“已选定”类,并从该列表中的所有其他类中删除“已选定”类 我想做的是简单地拥有它,因此如果您单击已经具有“selected”类的项,那么它将删除“selected”类。我知道它不应该是“returnfalse”;我只是把它作为占位符,因为我无法找出正确的编码 谢谢大家!:) 您应该能够使用$().removeClass('selected'),即 if ( $this.hasClass('selected') ) {

此函数的设置使其只需在菜单选项集中的类中查找-a,并在单击时表示,添加“已选定”类,并从该列表中的所有其他类中删除“已选定”类

我想做的是简单地拥有它,因此如果您单击已经具有“selected”类的项,那么它将删除“selected”类。我知道它不应该是“returnfalse”;我只是把它作为占位符,因为我无法找出正确的编码

谢谢大家!:)


您应该能够使用
$().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')​​;
    });