【问题标题】:click within click removal点击内点击移除
【发布时间】:2012-08-30 16:28:12
【问题描述】:

所以我正在尝试创建一个工具提示并想要它,以便在创建它时会向正文添加一个单击事件,这样每当单击正文上的任何内容时,工具提示就会消失。从理论上讲,这会传播,因此如果用户单击链接,则工具提示将消失,用户将前往链接指向的任何地方。

我遇到的问题是由于某种原因以下不起作用。甚至在我单击任何位置之前,我都得到了“此处”,它几乎在创建工具提示后立即触发删除,因此不会出现任何工具提示。关于如何做到这一点的任何想法。

    $("a").click(function(event){
        event.preventDefault();
        $(document.body).click(function(){
            $('.tooltip').remove();
            console.log('here');
        })

        var text = $(this).attr('title');
        var tooltip = $('<div class="tooltip">' + text + '</div>');
        $(document.body).append(tooltip);
    });

这是一个 JS Fiddle:http://jsfiddle.net/fgRTa/ 你应该先点击链接 2 以查看它是否有效,否则如果你先点击链接 1,然后点击链接 2,则正文上已经有点击事件,因此不允许添加的工具提示。从理论上讲,我希望这个问题也消失,这样当我点击一次时,点击事件就会被删除,但这是一个附带问题。

谢谢

【问题讨论】:

  • umm.. 你确定要在 a.click 函数中使用 document.body click 函数吗?每次单击第一个锚点时,它都会绑定另一个单击事件
  • 是的。它只适用于特定的锚。以上只是一个简化的例子。

标签: jquery click event-bubbling


【解决方案1】:

这是因为当您将点击处理程序添加到正文时,当前点击并未停止传播。

尝试使用event.stopPropagation();

小提琴,供您参考http://jsfiddle.net/fgRTa/2/

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 2011-12-29
    • 2019-06-26
    • 2015-06-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多