2013-06-01 6 views
1

Я пытаюсь добавить поведение к объектам DOM, вставленным через AJAX.jQuery повторные прослушиватели после успеха ajax

Из того, что я читал в jQuery Api Docs, я думаю, что было бы лучше иметь обработчик onInit(scope) для выполнения привязки событий к новому контенту.

До сих пор я получил это:

function onInit(scope) { 
    console.log('init', scope); 
    $('.sometestclass', scope).css({'color':'red'}); 
} 

(function($) { 
    $(document).ready(function(){ 
     $(document).on('click', '.ajax-button', function(event){ 
      event.preventDefault(); 
      $target = $(this); 
      $.ajax({ 
       url: 'validUrl', 
       ... 
       success: function(data) { 
        var $new = $target.replaceWith(data);  
        onInit($new); 
       }, 
      }); 
     }); 

    onInit(this); 
}); 

})(jQuery); 

Via поджигатель Я может проверить Ajax вызов успешным, содержимое заменяется по желанию. onInit вызывается в событии document.ready и после события ajax.sucess. В консоли firebug нет ошибок. Тем не менее, нет реакции на второй вызов onInit ($ scope).

Что я здесь делаю неправильно?

Используемая версия jquery - 1.9.1.

+1

Что такое $ new точно? И что вы ожидаете от $ new? –

ответ

1

В ReplaceWith() документ, вы можете прочитать:

Заменить каждый элемент в наборе соответствующих элементов с предоставленной новым содержанием и возвращают набор элементов, который был удален.

Таким образом, вы вызываете функцию init() на удаленный элемент.

+1

Вот и все. в точку. Примерно через час расследования вы просто скажите мне, что я неправильно прочитал документы. И ты прав. Спасибо. – marc

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