1

我有一个包含$('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;
    });

});

但是,当单击列表中的链接时,第一段代码(单击事件)不会触发。但是,它会触发页面上的所有其他链接。我该如何解决这个问题,以便我的脚本适用于动态元素

4

1 回答 1

2

只是对另一个SO question的重新讨论。

在 $(document) 上调用 jQueryon方法并提供“选择器”选项会将回调绑定到与选择器参数匹配的动态添加的元素。

也就是说,这个:

$(document).on('click', 'a', function () {
  alert( $(this).attr('class') ); 
});

而不是这个:

$('a').on('click', function () {
  alert($(this).attr('class')); 
});
于 2013-10-18T20:17:22.867 回答