2014-06-16 5 views
1

Мне нужен способ использования функции jquery .live() для работы с элементами, загружаемыми через ajax.jquery .live on load function

Для примера. ДИВ загружается через AJAX .load()

Обычно мы используем .live() с событием для обработки Ajax загружены данные, но мне нужно, чтобы справиться с этим Див на каждый раз, когда данные Аякса загружается с событием нагрузки ,

Ниже мой код, который не работает, но я хочу сделать что-то вроде этого:

$('#hidden').live('load',function(){ 
     hiddenInfo = $('#hidden').text(); 
    }); 
+1

+1: На самом деле это не плохой вопрос. Многие люди хотят знать, когда что-то есть * Ajax загружен *, но знаете в общем виде. –

+0

Вы понимаете, что '.live()' устарел и удален из jQuery, правильно? – jfriend00

ответ

0

Просто сделать что-то в обратный вызов AJAX, когда он загружен, например:

success: function(data) { 
    $("#hidden").html(data); 
    hiddenInfo = data.text; //or whatever 
} 

Или подключитесь к глобальному событию AJAX, чтобы что-то делать каждый раз, когда заканчивается событие AJAX.

3

Более общий подход к трансляции пользовательского события, в случае успеха Ajax, используя trigger, так что вы можете использовать on (в предпочтении к live, пожалуйста);

success: function(data) { 
    $("#hidden").html(data); 
    $("#hidden").trigger("panelloaded"); // Just pick a name not already used 
} 

Тогда вы можете иметь

$('#hidden').on('panelloaded',function(){ 
    hiddenInfo = $('#hidden').text(); 
}); 

или делегированную версию, если сам элемент может измениться:

$(document).on('panelloaded', '#hidden', function(){ 
    hiddenInfo = $('#hidden').text(); 
}); 

В теории, вы можете использовать «нагрузку» в качестве имени события (и вообще не изменяйте свой код), но я не уверен, какие другие столкновения у вас могут быть такими, как load - такой общий термин.