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时,它仍会运行点击事件。
如何为$(document).on
中的标记链接停止传播?
如果我设置class =&#34; page-list&#34;在li标签中,它会起作用。
<li class="page-list"><a>aaa</a></li>
答案 0 :(得分:0)
:: [在chrome中工作] ::
if(someFlag){
// trigger default event behavior
return true;
} else {
evt.stopPropagation();
evt.preventDefault();
}
答案 1 :(得分: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"');
// ...
});