我有一个下拉菜单,单击图标应将类“打开”添加到其父级,然后在任何位置单击菜单应将其关闭。但是,单击该图标时,绑定内部的函数将触发。这样做的效果是添加了Open类,然后立即将其删除。
这可能是一个简单的问题,但是我似乎无法弄清为什么'click'事件立即触发!?
此问题可能相似,但仍然无法解决:jQuery bind event firing the event
$(function () {
$(".ui-dropdown-action").bind("click", function () {
$(this).parent()
.addClass("Open")
.bind("click", function () {
$(this).removeClass("Open");
});
});
});
[我认为您可能会对使DOM树冒泡的click事件有问题。这就是为什么还在父级上触发点击的原因。
如果将事件对象作为第一个绑定的参数传递,并按如下所示调用event.stopPropagation()
,则>]
$(function () { $(".ui-dropdown-action").bind("click", function (event) { event.stopPropagation(); $(this).parent() .addClass("Open") .bind("click", function () { $(this).removeClass("Open"); }); }); });
应解决您的问题。
您可以传递事件参数并停止事件冒泡。尝试此操作
它立即触发,因为click事件冒泡到父对象,然后触发该选择器。要解决此问题,您可以在第二个绑定周围使用setTimeout()。
就我而言,当我使用类似的东西时