2013-04-05 2 views
2

Я обновил сценарий 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; 
    }); 

Любая идея, что происходит не так?

+1

Выглядит прямо на первый взгляд, но не уверен, почему вы объявляете 'delItem' в глобальной области? И 'this' обычно ссылается на элемент' .del', а не 'document'! – adeneo

+3

@Rob - Это неверно. '$ (this)' будет ссылаться на элемент, нажатый, а не 'document'. – Steve

+3

@Steve - 'e.target' был бы нажатым элементом,' this' был бы связан с элементом, в данном случае '.del'. Часто они одинаковы. – adeneo

ответ

0

С знанием HTML структуры и зная, что «JSON» не подходит, вы можете попробовать это:

$('#listInserts').on('click','.del', function() { 
    var delItem = $(this); 
    var dataid = delItem.attr('rel'); 
    $.post('dashboard/xhrDeleteListing', {'dataid': dataid}, function(o) { 
     delItem.closest('div').remove(); 
    }); 
    return false; 
}); 
0

Я нашел ответ на мою проблему

$('.del').on('click', function() { 
    delItem = $(this); 
    var dataid = $(this).attr('rel'); 

    $.post('dashboard/xhrDeleteListing', {'dataid': dataid}, function(o) { 
delItem.parent().remove(); 



    }); 
      return false; 
}); 

оказалось, что Im возвращая true из моей модели, но ожидая объект JSON. Удалено ,JSON, и он работал так, как должен.

+0

Отлично, попробуйте код в моем ответе, который повторяет функциональность старого кода. Различия могут быть значительными. –

+0

@ Свекла-Свекла, она имела какую-то разницу и задушила – Simmern

+0

Симмерн, надеюсь, я поощрил вас в правильном направлении. Удачи с вашим проектом. –