jQuery onClick动作不会触发第二次

时间:2012-09-23 21:18:01

标签: jquery onclick

基于之前在SO上回答的一个问题,我制作了这个脚本,它将一个CSS类添加到一个元素onClick上。问题是它只能工作一次。如何重置功能?

这是jQuery代码:

jQuery(function() {
jQuery('.close-button').click(function(){
    jQuery(".content-display").addClass("cover");
    jQuery(".close-button").addClass("cover");
});

jQuery('.project').click(function(){
    jQuery('.content-display').addClass("uncover");
    jQuery('.close-button').addClass("uncover");
    }); 
});

一个fiddle包含所有内容。

3 个答案:

答案 0 :(得分:4)

改为使用.toggleClass()

jQuery('.project').click(function(){
        jQuery('.content-display').toggleClass("cover");
        jQuery('.close-button').toggleClass("cover");
    }); 
});

这样,如果该类已经存在,它将被删除;否则,它将被添加。此外,您应该切换cover课程,因为div最初是可见的。

<强> DEMO

答案 1 :(得分:2)

您需要删除操作上的替代类。在当前代码中同时按下close和project之后,您同时拥有封面和揭示类

jQuery(function() {
   jQuery('.close-button').click(function(){
       jQuery(".content-display").addClass("cover").removeClass("uncover");
       jQuery(".close-button").addClass("cover").removeClass("uncover");
   });

   jQuery('.project').click(function(){
       jQuery('.content-display').addClass("uncover").removeClass("cover");
       jQuery('.close-button').addClass("uncover").removeClass("cover");
   }); 
 });

对于这个特殊情况,使用uncover类似乎是不必要的,我投票给简单的removeClass解决方案(@Stuart Feldt)

答案 2 :(得分:1)

如果您只想隐藏并显示div,可以尝试:

jQuery(function() {
    jQuery('.close-button').on('click', function(){
        jQuery(".content-display").addClass("cover");
        jQuery(".close-button").addClass("cover");
    });

    jQuery('.project').on('click', function(){    
        jQuery(".content-display").removeClass("cover");
        jQuery(".close-button").removeClass("cover");
    }); 
});