Jquery不应用于在上下文菜单中创建的动态元素

时间:2013-10-18 19:31:15

标签: dynamic contextmenu jquery-on

我有一个包含$('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事件)不会触发。但是,它会触发页面上的每个其他链接。如何解决这个问题,以便我的脚本适用于动态元素

1 个答案:

答案 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')); 
});