javascript – jquery toggleClass只能运行一次

当您点击< div>时,此脚本就是如此.另一个< div>通过将类log_in_Box_dd添加到#big_ul_hide来显示.一旦#big_ul_hide拥有该类,单击任意位置(#big_ul_hide除外将删除该类,从而隐藏它.
因此,您单击以查看弹出式div,然后单击任何位置,但该div应隐藏它.

这一切都有效,但只有一次.之后,它变得非常奇怪.
添加然后删除后,
检查元素将读取< div id =“big_ul_hide”class =“”>.我不能让课程重新添加.

添加了setTimeout函数,因此在单击.lin_und时不会立即删除该类.

那么,为什么不让我重新加入课程呢?如果我在.toggleclass之后发出警报(…),它每次都会发出警报,但仍然没有应用该类.

小提琴:http://jsfiddle.net/NQxAC/

Box_dd');
});
setTimeout(function() {      
    $('html').click(function() {
        if($('#big_ul_hide').hasClass('log_in_Box_dd')) {
            $('#big_ul_hide').removeClass('log_in_Box_dd');
        }
    });
    $('#big_ul_hide').click(function(event) {
        event.stopPropagation();
    });
},2000);
最佳答案
您需要最初停止事件冒泡并将html上的click事件处理程序从内部单击处理程序移出,以便它存在一个它自己(否则您将重复绑定click事件).尝试使用:

$('.lin_und').click(function (e) {
    e.stopPropagation();
    $('#big_ul_hide').toggleClass('log_in_Box_dd');
    $('#big_ul_hide').click(function (event) {
        event.stopPropagation();
    });
});
$('html').click(function () {
    $('#big_ul_hide').removeClass('log_in_Box_dd');
});

jsFiddle example

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...