2016-01-13 113 views
1

如何删除priSCW-active第二次点击后。点击删除第二次点击后添加的类

该代码需要工作,但当我点击第二次在container它不关闭。

我在这里失踪的人在这方面任何人都可以帮助我?

DEMO

$(document).ready(function() { 
    $("body").on("click", ".container", function(event) { 
     event.stopPropagation(); 
     var ID = $(this).attr("id"); 
     $(".priSCWrap").removeClass("priSCW-active"); 
     $("#open" + ID).toggleClass("priSCW-active").siblings().removeClass('priSCW-active');; 
    }); 
    $("body").click(function(){ 
     $(".priSCWrap").removeClass("priSCW-active"); 
    }); 
}); 

回答

2

如果删除removeClass()呼叫,则切换将实现你需要什么你。目前,您删除课程并切换后,会立即将其重新添加回去。另请注意,.priSCWrap元素不是兄弟,因此siblings()不会选择任何内容。您需要再次查询这些元素并从匹配的集合中删除当前,以删除任何现有的priSCWrap-active类。试试这个:

$("body").on("click", ".container", function(event) { 
    event.stopPropagation(); 
    var $current = $(this).find('.priSCWrap').toggleClass("priSCW-active"); 
    $('.priSCWrap').not($current).removeClass('priSCW-active'); 
}); 

Example fiddle

还要注意使用thisfind()这否定了需要bodge在一起的id选择。

+0

感谢您的干净的答案。 – Azzo

+0

没问题,很乐意帮忙。 –

+0

但有一个问题。当我点击其他.container的时候currenct打开div将留在那里。如何解决这个问题呢 ? – Azzo

2
$(document).ready(function() { 
    var clicked = 0; 
    $("body").on("click", ".container", function(event) { 
     if (++clicked === 2) { 
      // your code 
     } 
     event.stopPropagation(); 
     var ID = $(this).attr("id"); 
     $(".priSCWrap").removeClass("priSCW-active"); 
     $("#open" + ID).toggleClass("priSCW-active").siblings().removeClass('priSCW-active'); 
    }); 
    $("body").click(function(){ 
     $(".priSCWrap").removeClass("priSCW-active"); 
    }); 
}); 
0

你不得不删除这条线

$(".priSCWrap").removeClass("priSCW-active"); 
+0

仅有代码的答案被认为是低质量的。请解释你的解决方案。代码示例中将使用两行代码。 –