2016-09-10 1 views
-1

Meine Rails-App lädt einen Teil, der Links enthält, und ein geladenes Skript, das für jeden Link onClick Ereignisse erstellt.AJAX-geladene JS wird nicht gerendert

Diese Links werden gut dargestellt, wenn die Seite normal geladen wird (nicht über AJAX).

Diese OnClick-Ereignisse werden jedoch nicht ausgelöst, wenn ich die partielle über AJAX laden.

Wenn ich einen Ajax-Aufruf zu load_links_url tun, Ansicht, deren enthält diese:

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

Die onClick Ereignisse Brennen nicht. Warum das?

Die partielle links/_links.html.haml sieht wie folgt aus:

-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 Die Teildatei, die ich oben eingefügt habe, ist gut, wenn nicht über AJAX gerendert, und die onclicks funktionieren gut. Nur wenn es dynamisch gerendert wird, funktioniert das JS nicht (die Links werden immer noch angezeigt, und das JS wird angehängt, aber die onclick-Ereignisse werden nicht ausgelöst). – bevanb

+1

Lösung Anruf $ (". Select-Link"). Klicken Sie auf Code nach dem dynamischen Hinzufügen von Code. – Sanka

+0

@sanka Der '$ ('. Select-link')' Code wird gerendert, nachdem die Links selbst gerendert wurden, falls Sie das fragen. – bevanb

Antwort

0

Werfen Sie einen Blick auf die Jquery event handler not working on dynamic content

Zusammengefasst für dynamisch hinzugefügt Inhalt, mit der richtigen Auswahl für Ereignis Delegation verwenden .on. Wie in Ihrem Fall:

+0

Dies funktioniert leider nicht. Selbst wenn ich diesen Code nach dem dynamischen Laden des HTML-Codes ausführe, funktioniert es nicht. – bevanb