jquery函数没有附加到dom元素

时间:2013-02-18 16:47:01

标签: javascript jquery json javascript-events

我正在尝试构建一个网页,它将从json文件构造元素并将click函数附加到这些元素。

$(document).ready(function(){

 $.ajax({
        url: 'database.php',
        type: "POST",
        dataType: 'json',
        success: function (datas) {
            (datas);
            for (var x = 0; x < datas.data.length; x++) {
                var id = datas.data[x].ID;
                var ip = datas.data[x].IP;
               var ips='<div class="ip"><span id="ids">'+id+'</span><span id="number">'+ip+'</span></div>';
               $('#left').append(ips);

            }
        }
    });

$('.ip').click(function () {
alert($(this).children('#ids').text());
});

});

上面的代码成功构建了元素,但点击功能不起作用。

1 个答案:

答案 0 :(得分:3)

您可以使用on函数,它用于将事件处理程序应用于尚未创建的元素。

如果您有当前的click设置,请尝试使用以下内容:

$(document).on('click', '.ip', function(){
    alert($(this).children('#ids').text());
});

正如@Pete所建议的那样,在循环中分配相同的id属性不是一个好主意,它们应该对文档是唯一的。请考虑通过class名称找到它们,这样您就可以提醒:

alert($(this).children('.MyIdsSpan').text());