我有一个包含$('a').on('click', function () {alert($(this).attr('class')); });
的脚本
在我的contextmenu函数中,我创建了一个包含链接的列表
$(function () {
$('a').on('contextmenu', function (event) {
$("<ul id='menu'></ul>")
.append('<li><a href="#" class="test">Test 1</a></li>')
.append('<li><a href="">Test 2</a></li>')
.appendTo("body")
.css({ top: event.pageY + "px", left: event.pageX + "px" });
return false;
});
});
但是,单击列表中的链接时,第一段代码(on click事件)不会触发。但是,它会触发页面上的每个其他链接。如何解决这个问题,以便我的脚本适用于动态元素
答案 0 :(得分:2)
重新审视另一个SO question。
在$(document)上调用jQuery on
method并提供'selector'选项会将回调绑定到与selector参数匹配的动态添加元素。
就是这样:
$(document).on('click', 'a', function () {
alert( $(this).attr('class') );
});
而不是:
$('a').on('click', function () {
alert($(this).attr('class'));
});