Я создаю 2 сортируемых списка, элементы в этом списке добавлены с помощью append(). Все работает нормально, но мне нужно, чтобы элементы перемещались между списками при нажатии.
Я не понимаю, почему событие on click на li не работает.
Вот коды:
присоединять
$("#availble_contacts").append("<li class='contact_li'>" + contact + "</li>");
Перемещение с помощью кликов
$('.contact_li').on('click', function () {
console.log("click detected");
});
Что мне не хватает?
большое спасибо
Поскольку contact_li
добавляется динамически, вам необходимо использовать event delegation
для регистрации обработчика событий
// New way (jQuery 1.7+) - .on(events, selector, handler)
$('#availble_contacts').on('click', '.contact_li', function() {
console.log("click detected");
});
вам лучше привязать событие click на ul, а не li, и определить точное значение li "целью" "события".
$("#availble_contacts").on("click",function(event){
var e = event || window.event;
var target = e.target || e.srcElement;
console.log("you clicked "+target);
})
Попробуйте найти
$('#availble_contacts').find('.contact_li').on('click', function () {
console.log("click detected");
});
Или даже вы можете использовать метод delegate
для click event
например
$('#availble_contacts').on('click', '.contact_li', function () {
console.log("click detected");
});
Запишите, что вы поставили код в dom ready
$(document).on('click', '.contact_li', function () {
console.log("click detected");
});
См. Ваш lis в.contact_li - это динамически созданный элемент, поэтому непосредственное связывание js-события не будет привязано к нему, поэтому вы можете делегировать событие ближайшему статическому родительскому "#availble_contacts"
например "#availble_contacts"
в вашем случае:
Измените это:
$('.contact_li').on('click', function () {
к этому:
$("#availble_contacts").on('click', '.contact_li', function () {