Javascript .on事件处理程序

时间:2012-09-22 00:13:10

标签: javascript jquery

我有以下情况;在我的js中,我有一个动态超链接,我需要捕获点击的链接ID。

for (var i = 0; i < neighbor.data[3].length; i++){
    <a class="Chris" name="a" id="+i+" href="Chris">Hi</a>
}

现在我可以得到这个;

    parseInt($(this).attr("ID"));

我用它来捕获它;

$(document).on("click", "a.a", function(event) {
    event.stopPropagation();
    alert(clickedID);
    clickedID = parseInt($(this).attr("ID"));
});

现在,我的问题是,每当我点击超链接而不是只有一个clickedID时,我会点击每个超链接。有办法防止这种情况吗?

3 个答案:

答案 0 :(得分:2)

我相信您正在获取每个锚标记,因为您要在文档上设置事件,而不是锚标记。试试这个:

$('a').on('click',function(event) {
  event.stopPropagation();
  clickedID = parseInt($(this).attr('id'));
  alert(clickedID);
});

答案 1 :(得分:1)

for循环中有错误。您的id="+i+"只会将所有锚标记的ID设置为+i+,因为您没有转义加号和变量i

答案 2 :(得分:0)

您可以尝试这样做,"a.a"应该是"a.Chris",因为Chris是您使用的类名aid应该以非{1}开头 - 数字字符。

for (var i = 0; i < neighbor.data[3].length; i++){
    var a='<a class="Chris" name="a" id="id_'+i+'" href="Chris">Hi</a>';
    $('#links').append(a);
}

$("#links").on("click", "a.Chris", function(event) { // You can use $(document).on(...) instead of $("#links").on(...)
    event.preventDefault();
    event.stopPropagation();
    clickedID = parseInt($(this).attr("id").split('_')[1]);
    alert(clickedID);
});

DEMO