javascript - 将数据添加到动态创建的元素并绑定(bind)事件

标签 javascript html dynamically-generated jquery

我正在尝试将单击事件绑定(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/

相关文章:

jquery - 让 Jquery lavalamp 成为 fieldset 的传奇

javascript - 执行一个函数?仅适用于调整大小

javascript - 将内容从 div 复制到新窗口并保持样式?

JavaScript BlockStatement 混淆

javascript - 将 HTML 表单输入转换为 JavaScript 变量

javascript - 使用 javascript/jquery 触发文件上传对话框

jquery - 打字时改变 <p>

excel - 生成与行值相对应的图纸(存在重复值)

javascript - jquery : not able to select table elements which are created dynamically by jquery

jquery-mobile - 动态生成支持 JQuery Mobile 主题的内容