我使用 div 构建了一个自定义下拉框,我想将一个click
事件绑定到打开的类。这是一个基本的例子。在这里摆弄。
问题是,如果我在单击包装 div 后单击测试 div,它会触发两个单击事件。
我基本上只是想在第一次点击事件之后将点击事件绑定到正文。对不起,链接器剥夺了我小提琴网址的最后一部分。
我设法解决了这个问题。我在包装器上有 e.stopPropagation() 而不是里面的 div 。
如果你正在使用
$(document).ready(function(){
});
该功能需要像这样
$(document).on("click", "#someid", function (e) {
});
如果您想尝试,这就是我将 js 更改为小提琴中的内容
$(function(){
$("body").one("click", "#test", function(){
$(this).addClass("close");
alert("Close Class Added");
});
$("body").one("click", ".close", function(){
$(this).removeClass("close");
alert("Closed");
});
});
第二个 .one 类消除了对 if 语句的需要,因为您不需要检查 .close 是否已添加,它只会在设置类时触发
在你的小提琴中试试这个代码:
$("body").on("click", "#test", function(e){
alert("click1");
e.stopPropagation();
$("#test").addClass("close");
});
$(document).on("click", function(e){
if($("#test").hasClass("close")){
alert("click2");
}
});
我认为这应该做你想要的。