1

我正在尝试将单击事件绑定到动态创建的元素。由于我需要在单击后稍后识别确切的元素,因此我正在尝试为其保存附加 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);

不幸的是,如果单击该元素,则不会发生任何事情。我知道这可能是重复的,但是在搜索了一段时间后,我无法解决问题。

干杯, Stiller_leser

4

1 回答 1

1

那是因为您创建了一个 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)只附加原始字符串而不是创建的对象。

于 2013-09-29T23:25:37.003 回答