2014-01-09 7 views
3

Я пытаюсь динамически добавлять элемент списка в список, а затем удалять его, нажимая на этот элемент. Событие удаления никогда не срабатывает. Однако, если я использую тот же код в статическом списке, он отлично работает. Я видел похожие решения, но они не работают.Удалить динамически добавленный элемент списка LI с помощью jQuery

См jsFiddle: http://jsfiddle.net/Lc2bC/

<input id="status" type="text" placeholder="Status (tab or enter)"> 

<br/> 
Dynamic List: 
<ul id="statusList"></ul> 


$('#status').keydown(function (e) { 
    if (e.which == 9 || e.which == 13) { 
     $('#statusList').html($('#statusList').html() + formatNewStatus(this.value)); 
     this.value = ""; 
     this.focus(); 
     e.preventDefault(); 
    } 
}); 

$(function() { 
    $('#statusList li').click(function() { 
     alert('dynamicList'); 
     $(this).remove(); 
    }) 
}); 
+0

Вы должны использовать делегирование с на() –

ответ

6

Это потому, что функция click() связывается только с элементами, которые существуют в йот в то время это называется.

live() - это старая техника, но устарела и не будет поддерживаться в будущих версиях.

Что вам нужно использовать это on()

$(function() { 
    $('#statusList').on('click', 'li', function() { 
     alert('dynamicList'); 
     $(this).remove(); 
    }); 
}); 
+0

'live()' даже не поддерживается в текущих версиях - он был удален в jQuery 1.9. Почему бы вам даже не упомянуть об этом, так как вопрос никогда не спрашивал об этом? – Barmar

+1

Вся точная информация полезна, особенно для таких людей, как я, которые находятся и выходят из jQuery. Я не понимал, что on() заменил live(), поскольку я не делаю много jquery. Я на самом деле пытался использовать live() в какой-то момент. Спасибо за информацию. –

+0

Спасибо, что мне нужно! – user1781367

2

click функция связывается только с элементами, которые присутствовали, когда она была вызвана. Вместо этого используйте on().

на()

Присоединить функцию обработчика событий для одного или нескольких событий для выбранных элементов.

http://api.jquery.com/on/

+4

'живой()' осуждался в jQuery 1.7, удалено в 1.9. Вы имеете в виду 'on()'. – Barmar

+2

жить мертво ... –

+1

Хорошо поймать, обновлено. Я все еще работаю над старой базой кода jQuery. Обновлен ответ. –

2

Использование на http://api.jquery.com/on/

$(function() { 
    $('#statusList').on("click", "li", function() { 
     alert('dynamicList'); 
     $(this).remove(); 
    }) 
}); 

FIDDLE

+0

Исправить. Спасибо за использование скрипки тоже. –

+0

Добро пожаловать! – Merlin

Смежные вопросы