2015-09-15 2 views
0

Я использую RJS в своем текущем проекте.Rails2: RJS - События Javascript не работают, когда на обновлениях страницы удаленно

У меня есть строки таблицы с данными, а в последнем столбце есть кнопка, которая связывает функцию javascript click.

Теперь мне нужно сделать AJAX и добавить новую таблицу в таблицу. Он работает нормально. Файл шаблона create.rjs.

page.insert_html(:bottom, "products", :partial => "product_row.html.erb", :locals => {:product => @product}) 

код JS:

jQuery(document).ready(function(){ 
    jQuery("button.add_color").click(function(){ 
    alert('ok'); 
    }); 
}); 

Все отлично работает, кроме Javascript click событие не работает для вновь созданной строки.

Помогите, пожалуйста, как сохранить привязку событий javascript для недавно добавленного DOM by AJAX?

+0

показать нам JS-код тоже – dimakura

+0

@dimakura - Добавлен код JS. Я не могу дать реальный код, но только базовый код. Благодаря! –

ответ

1

Я думаю, вы должны использовать JQuery-х .delegatemethod:

jQuery(document).ready(function(){ 
    jQuery('body').delegate('button.add_color', click, function(){ 
    alert('ok'); 
    }); 
}); 

С delegate «s документации:

Attach обработчик одного или нескольких событий для всех элементов, которые соответствуют селектору, в настоящее время или в будущем, на основе определенного набора корневых элементов.

+0

Спасибо @dimakura. Он работает нормально. –

+0

Я также нашел его рабочим, используя 'live' из [здесь] (http://blog.revathskumar.com/2013/10/jquery-on-avoid-losing-event-binding-for-ajaxed-contents.html). Я не уверен, что является эффективным. –

+0

@VenkatCh вот хорошая дискуссия http://stackoverflow.com/questions/4579117/jquery-live-vs-delegate, что может показаться вам полезной – dimakura

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

  • Нет связанных вопросов^_^