2010-04-30 2 views
2

Я уже использую как .live(), так и .bind ('ajaxComplete') для выполнения определенных связанных задач, но я обнаружил, что хочу прослушивать «полное» событие определенного элемента DOM, который будет вызывать jQuery's .load() в разное время.Подписываться на «полное» событие .load() для определенного элемента DOM?

В этой ситуации я не хочу слушать ВСЕ полные события глобально (если кто-то не сможет показать мне, как получить целевую цель от объекта события, возвращаемого 'ajaxComplete'). Я хотел бы быть в состоянии сделать что-то вроде этого:

$('.selector').load('url.php',{data:data},function(){ 
    // LOCAL complete function 
}); 

, а затем где-то еще, прикрепить обработчик слушать и выполнять некоторый другой код всякий раз, когда срабатывает Ajax вызова и завершает:

$('.selector').bind('complete',function(){ ... }); 

I знайте, что я могу использовать то, что я указал выше как «ЛОКАЛЬНАЯ полная функция», чтобы прикрепить некоторые функции, но я хотел бы иметь возможность привязываться ко всему событию из другого места в моем коде - так же, как и к другим событиям, нажмите».

Есть ли способ сделать это? Или я всегда должен использовать «полное» событие в контексте метода load()?

ответ

2

Просто вызвать полное событие в вашем полном обратного вызова:

$('.selector').load('url.php',{data:data},function(){ 
    $(this).trigger('complete'); 
    // Local handling of the complete event. 
}); 

$('.selector').bind('complete',function(){ ... }); 
+0

спасибо, это именно то, что я необходимо! и такое приятное простое решение –

0

Вы были рядом с вашим примером, см. Документацию .load() в jQuery. http://api.jquery.com/load/

$('.selector').load('url.php',function() { 
    //Complete function 
}); 
+0

? согласно документам, метод load() принимает необязательный аргумент объекта данных. .load (url, [data], [complete (responseText, textStatus, XMLHttpRequest)]) EDIT: Извините, если вопрос не ясен, отредактирован выше спасибо –

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