jQuery绑定单击立即触发

问题描述 投票:3回答:4

我有一个下拉菜单,单击图标应将类“打开”添加到其父级,然后在任何位置单击菜单应将其关闭。但是,单击该图标时,绑定内部的函数将触发。这样做的效果是添加了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");
            });
    });

});
javascript jquery
4个回答
8
投票

[我认为您可能会对使DOM树冒泡的click事件有问题。这就是为什么还在父级上触发点击的原因。

如果将事件对象作为第一个绑定的参数传递,并按如下所示调用event.stopPropagation(),则>]

$(function () {

  $(".ui-dropdown-action").bind("click", function (event) {
    event.stopPropagation();
    $(this).parent()
        .addClass("Open")
        .bind("click", function () {
            $(this).removeClass("Open");
        });
  });

});

应解决您的问题。


0
投票

您可以传递事件参数并停止事件冒泡。尝试此操作


0
投票

它立即触发,因为click事件冒泡到父对象,然后触发该选择器。要解决此问题,您可以在第二个绑定周围使用setTimeout()。


0
投票

就我而言,当我使用类似的东西时

© www.soinside.com 2019 - 2024. All rights reserved.