Я обновил сценарий jquery до 1.9.1, а функция остановилась, работая с .live()
.jquery .on function
У меня есть .on()
, но теперь он не удаляет элемент из списка, я должен обновить страницу, чтобы увидеть результат.
генерировать HTML-код:
for (var i = 0; i < o.length; i++)
{
$('#listInserts').append('<div>' + o[i].text + '<a class="del" rel="'+ o[i].dataid +'" href="#">X</a></div>');
}
код перед
$('.del').live('click', function() {
delItem = $(this);
var dataid = $(this).attr('rel');
$.post('dashboard/xhrDeleteListing', {'dataid': dataid}, function(o) {
delItem.parent().remove();
}, 'json');
return false;
});
код после
$(document).on('click','.del', function() {
delItem = $(this);
var dataid = $(this).attr('rel');
$.post('dashboard/xhrDeleteListing', {'dataid': dataid}, function(o) {
delItem.parent().remove();
}, 'json');
return false;
});
Любая идея, что происходит не так?
Выглядит прямо на первый взгляд, но не уверен, почему вы объявляете 'delItem' в глобальной области? И 'this' обычно ссылается на элемент' .del', а не 'document'! – adeneo
@Rob - Это неверно. '$ (this)' будет ссылаться на элемент, нажатый, а не 'document'. – Steve
@Steve - 'e.target' был бы нажатым элементом,' this' был бы связан с элементом, в данном случае '.del'. Часто они одинаковы. – adeneo