我遇到了一个问题,阻止使用on()
. 我研究过 Stackoverflow,但还没有找到答案。
代码如下所示:
$(document).ready(function() {
$(document).on('click', '.spoiler > a', function(e)
{
e.preventDefault();
return false;
});
});
然后,稍后,将添加一个链接,如下所示:
$("#chatContainer").append("<div class='spoiler'><a href='blah'>lorem ipsum</a></div>");
但是当我点击链接时,链接仍然被跟踪。我已经确认这是因为click
根本没有调用处理程序。我还确认正在调用该函数,并且$(document).ready()
在添加元素后正确选择了该元素。$('.spoiler > a')
<a>
那么,为什么它不起作用!? 不on()
应该绑定到与其选择器匹配的所有元素,即使是后来添加的元素?
[编辑] 如果我将代码放在onclick
元素<a>
中,它可以工作:
$("#chatContainer").append("<div class='spoiler'><a href='blah' onclick='return doNothingWhenClicked();'>lorem ipsum</a></div>");
...
function doNothingWhenClicked()
{
return false;
}
那么为什么在使用时它不起作用on()
!?