我正在尝试将单击事件绑定(bind)到动态创建的元素。由于我需要在单击后识别确切的元素,因此我尝试保存附加 ID。目前它看起来像这样:
var li = '<li class="item" data-type=' +$(this).attr("type")+' data-path="file://'+$(this).attr("path")+'" data-id="'+$(this).attr("id")+'">' + $(this).attr('name') + "</li>";
$(li).bind("click", {id : $(this).attr("data-id")}, function(event){
console.log("ID: " + event.data.id);
});
$("#playlistfiles").append(li);
不幸的是,如果单击该元素,则不会发生任何事情。我知道这可能是重复的,但经过一段时间的搜索后,我无法解决问题。
干杯, 斯蒂勒_莱瑟
最佳答案
那是因为您创建了一个 jQuery 对象但没有使用它。您可以使用 .appendTo() 方法。
$(li).bind("click", {id : $(this).attr("data-id")}, function(event){
console.log("ID: " + event.data.id);
}).appendTo('#playlistfiles');
或者:
var $li = $(li).bind("click", {id : $(this).attr("data-id")}, function(event){
console.log("ID: " + event.data.id);
});
$("#playlistfiles").append($li);
为什么会发生这种情况?
li
是一个字符串,通过将字符串传递给 jQuery 创建一个唯一的对象,$(li)
返回一个 jQuery 对象,.bind( )
添加一个处理程序,然后像许多其他 jQuery 方法一样返回当前集合,返回的值是一个实际上被丢弃的 jQuery 对象,因为您不存储重新调整的值和 .append(li)
仅附加原始字符串而不是创建的对象。
关于javascript - 将数据添加到动态创建的元素并绑定(bind)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084444/