2014-01-25 3 views
0

это функция, чтобы скрыть данныекосяк скрыть данные, которые были добавлены динамически

$(".dispatch_pedido").live('click', function(){ 

    var res = this.id.split("_"); 

    var id = res[1]; 

    $("#"+id).hide(); 
}); 

этот код работает только на данных, которые были первоначально добавлены, но не данные, добавленные Ajax.

+0

Вы должны использовать более новую версию jQuery. Наличие такой старой версии библиотеки, которая развивается для адаптации к новым версиям браузеров, не имеет смысла. –

+0

- это WEB APP, запрограммированный 4 года назад, если я обновляю jquery, функция LIVE перестанет работать с другими частями сайта ... @dystroy – bmacuer

+0

'live' устарел, так как версия 1.7 использует' on' вместо. – loki

ответ

0

При использовании Ajax, чтобы добавить новый элемент в DOM, вы должны использовать event delegation поэтому событие можно привязать к этому вновь добавленный элемент:

$(document).on('click', '.dispatch_pedido' , function(){ 

}); 

Кроме того, live нежелателен из JQuery версии 1.7, вместо этого вы должны использовать on().


Вы можете использовать delegate() вместо on() в старой версии JQuery:

$(document).delegate(".dispatch_pedido", "click", function() { 
    // Your code here 
}); 
+1

Это не объясняет, почему код OP не работает. –

+0

Невозможно обновить jquery. Все, что создано на этом веб-приложении, построено с помощью live (4-летнее приложение), я знал, как использовать нужные селектора, но я забыл об этом. – bmacuer

+0

@bmacuer Вы можете использовать 'delegate()'. проверьте мое обновление – Felix

0

Кажется, что ваш синтаксис не является правильным. Оформить заказ ниже.

$(".dispatch_pedido").live('click', function(){ 

    var res = $(this).attr("id").split("_"); 

    var id = res[1]; 

    $("#"+id).hide(); 
}); 
Смежные вопросы