2016-09-10 2 views
-1

Приложение My Rails загружает частицу, содержащую ссылки, и загруженный скрипт, который создает onClick событий для каждой ссылки.AJAX-загруженный JS не отображается

Эти ссылки визуализируются отлично, когда страница загружается нормально (не через AJAX).

Однако события onClick не срабатывают, когда я загружаю частичное через AJAX.

Когда я делаю AJAX вызов load_links_url, чье представление содержит следующее:

$("#my_div").html("#{j render('links/links', the_links: @links)}");

события OnClick не стреляя. Почему это?

Парциальное links/_links.html.haml выглядит следующим образом:

-links.each do |link| 
    =link_to link.name, "javascript:;", id: "select_link_#{link.id}", class: "select-link", "data-id" => link.id, "data-name" => link.name 

:javascript 
    $(".select-link").click(function() { 
     var id = $(this).data("id"); 
     var thename = $(this).data("name"); 
     $('#link_name_header').html(thename); 
     $('#creative_session_link_id').val(id); 
    }) 
+0

@sanka Частичный файл, который я вставил выше, отлично отрисовывается в AJAX, а onclicks отлично работает. Только тогда, когда он визуализируется динамически, JS не работает (ссылки все еще появляются, а JS добавляется, но события onclick не срабатывают). – bevanb

+1

вызов решения $ (". Select-link"). Щелкните код после динамического добавления кода. – Sanka

+0

@sanka Код '$ ('. Select-link')' создается после того, как сами ссылки отображаются, если это то, о чем вы просите. – bevanb

ответ

0

Посмотрите на Jquery event handler not working on dynamic content

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

$('#my_div').on('click', '.select-link', function(){}) 
or 
$(document.body).on('click', '.select-link', function(){}) 
+0

Это не работает, к сожалению. Даже если я выполню этот код после динамической загрузки HTML, он не работает. – bevanb