javascript - 如何使用 jQuery 附加 li 并在 onclick 方法上使用 id

标签 javascript jquery html

好的,下面是我的代码:

for (var mycounter = currentcanvas.getObjects().length; mycounter > 0; mycounter--) {
    var id = currentcanvas.getObjects().length - mycounter;
    alert(id);
    $("#frontlayers").prepend('<li id="' + id + '" class="layers"></span> Layer ' + (id + 1) + ': ' + "  " + ' </li>');
    $("#" + id).click(function(e) {
        alert(id);
    });
}​

这正确地添加了带有文本“Layer 1”和“Layer 2”的 li,但是当我点击它们时,警报总是 2 而不是相应的 0 和 1。 有谁知道为什么会这样?抱歉,我对 jQuery 比较陌生。

最佳答案

这是 $.each 的一个很好的用途,因为使用处理函数可以避免变量 i 上的闭包的范围问题:

$.each(currentcanvas.getObjects(), function(i, v) {
     var id = i;  // nb: numeric ID fields only allowed in HTML5
     $('<li>', {
         id: id,
         'class': 'layers',
         text: 'Layer ' + (id + 1) + ': '
     }).appendTo('#frontlayers').on('click', function(e) {
         alert(id);
     });
});

也就是说,由于您的 ID 无论如何都存储在被点击的元素上,您可以直接使用它 - this.id

关于javascript - 如何使用 jQuery 附加 li 并在 onclick 方法上使用 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149164/

相关文章:

javascript - 使 sap.m.CustomTile 可根据分辨率调整大小,例如从 500px 到 320px

javascript - 在 Laravel 中将 GET 参数传递给 POST

javascript - 通过curl获取数据时在新标签页(Javascript)中打开PDF

javascript - jQuery.post() 是否可以有两个成功的回调函数?

javascript - 如何使用 .val() 将 var 设置为 true 或 false

html - Bootstrap 列未正确对齐

javascript - Ajax调用不删除div

javascript - 警报自定义属性值 jquery 表单元格

javascript - JQuery - 使用替换和属性更改淡入(动画)img

javascript - 如何在 JavaScript 中检查我的按钮是否被点击?