检测单击添加了.append的可排序项目

时间:2013-11-11 11:07:50

标签: javascript jquery jquery-ui-sortable

我正在创建2个可排序列表,该列表中的项目添加了append()。 一切正常,但我需要点击列表之间的项目。

我无法理解为什么li上的点击事件无效。

以下是代码:

追加

$("#availble_contacts").append("<li class='contact_li'>" + contact + "</li>");

点击移动

$('.contact_li').on('click', function () {
    console.log("click detected");
});

我缺少什么?

非常感谢

5 个答案:

答案 0 :(得分:1)

由于contact_li是动态添加的,因此您需要使用event delegation来注册事件处理程序

// New way (jQuery 1.7+) - .on(events, selector, handler)
$('#availble_contacts').on('click', '.contact_li', function() {
    console.log("click detected");
});

答案 1 :(得分:0)

尝试使用find

$('#availble_contacts').find('.contact_li').on('click', function () {
    console.log("click detected");
});

甚至您可以使用delegate方法{/ 1}}

click event

确保您已将代码放入$('#availble_contacts').on('click', '.contact_li', function () { console.log("click detected"); });

答案 2 :(得分:0)

$(document).on('click', '.contact_li', function () {
    console.log("click detected");
});

答案 3 :(得分:0)

在.contact_li中查看你的lis是动态创建的元素,因此js事件的直接绑定不会附加到它,所以你可以将事件委托给最接近的静态父类,例如"#availble_contacts"

改变这个:

$('.contact_li').on('click', function () {

到此:

$("#availble_contacts").on('click', '.contact_li', function () {

答案 4 :(得分:0)

你最好在ul而不是li上绑定click事件,并通过“event”的“target”检测确切的li。

$("#availble_contacts").on("click",function(event){
    var e = event || window.event;
    var target = e.target || e.srcElement;
    console.log("you clicked "+target);
})