jQuery $(document).on如何为动态标记链接点击事件设置stopPropagation()

问题描述 投票:0回答:2

Jquery动态创建了程序中的链接。它就像

<div>
...
<li><a class="page-list">aaa</a></li>
...
</div>

我们在Jquery lib中定义了click函数。

现在我想在mousedown中为这个点击事件做stopPropagation。

$(document).ready( function() {
$(document).on('mousedown', '.page-list', function(e){
                var $target = $(e.target);
                $target.off('click', stopClickEvent);
                if (window.confirm('Will run click event?')) {
                                $(this).click();
                }
                $target.on('click', stopClickEvent);
        }); 
});
function stopClickEvent(e){
        e.stopPropagation();
        e.preventDefault();
}

它不起作用,当我点击aaa时,它仍然运行click事件。

如何在$(document).on中停止传播标签链接?

如果我在li标签中设置class =“page-list”,它将起作用。

<li class="page-list"><a>aaa</a></li> 
javascript jquery dynamic preventdefault stoppropagation
2个回答
0
投票

您的代码中有一些混淆:

首先,你不需要这个:var $target = $(e.target);,获取目标元素应该像$(this)一样简单,第二个你不必做$target.off$target.on以便停止事件传播,它必须在回调内部完成。然后,我认为click处理程序运行是因为你明确地在click()上调用$(this),这是元素本身。

所以,如果我想在停止传播时做些什么,我会怎么做:

$(document).on('click', '.page-list', function(e) {
  e.stopPropagation();
  e.preventDefault();
  // ... 
  alert('Element clicked"');
  // ...
});
© www.soinside.com 2019 - 2024. All rights reserved.