2016-07-19 5 views
-2

Ich bin ein Anfänger Schienen dev. Ich habe diesen link_to Tag mit der Klasse von "comments_link"Kann link_to nicht als jquery selector auswählen Rails

%h2= link_to pluralize(@recipe.comments.count, "Comment"), "#", class: "comments_link , btn btn-success" 

, jetzt in application.js i

schrieb
$(document).ready(function(){ 
    $(".comments_link").click(function(){ 
    $(".section").toggle(); 
    });        
}) 

Das Problem mit diesem Code, was auch immer das Element i für Click-Ereignis wählen, Es klappt. Aber wenn ich .comments_link Klasse verwende, funktioniert es nicht. Warum passiert dies?

Alles andere als link_to Tags funktionieren als Ereignis-Listener. Muss ich etwas Code hinzufügen?

Btw ich tat das Gegenteil nur zu versuchen, und es hat funktioniert. Wenn ich auf den Abschnitt klicke, wird der Link umgeschaltet. Die Verbindung kann jedoch kein Ereignis-Listener sein.

$(document).ready(function(){ 
    $(".section").click(function(){ 
    $(".comments_link").toggle(); 
    });        
}); <-- this one worked. I cant use ".comments_link" as event listener. 
+1

Sie haben ein ‚‘ innen deine Klasse. – FedeSc

+0

Ich habe den ", btn btn-default" Teil gelöscht, nur um sicher zu sein. Aber es hat nicht funktioniert. –

+1

Ich möchte den erzeugten HTML sehen. – jaydel

Antwort

1

Sie haben ein Komma im Klassennamen, von dem ich annehme, dass es den Klassennamen ungültig machen würde. Überprüfen Sie die Entwickler-Tools, um das Element zu prüfen, ob .comment_link tatsächlich existiert. Wenn nicht, entfernen Sie das Komma und versuchen Sie es erneut

+0

nope.comma hat es auch nicht beeinflusst. Das ist ein seltsamer Fehler. –

+0

Sie haben also bestätigt, dass der Klassenname für das Element korrekt ist? –

+0

Das Problem scheint mit dem HTML zu sein. Können Sie die HTML-Ausgabe –

-3

try this:

%h2.comments_link= link_to pluralize(@recipe.comments.count, "Comment"), "#",class: "btn btn-success" 

statt:

%h2= link_to pluralize(@recipe.comments.count, "Comment"), "#",class: "comments_link , btn btn-success" 

setzt man die Klasse auf für das Element H2 der andere mit dem Anker in seinem Inneren. scheint, als würden Sie das gesamte Element nicht nur durch den Link im Inneren schalten wollen.

+0

Naah.Didn't funktioniert.Dieses Problem ist einfach und kompliziert zugleich. –

+0

Was ist seltsam daran, wenn ich Abschnitt als Listener und Link als Toggle-Klasse wählen, funktioniert es.Klicken auf Abschnitt schaltet die Verbindung.Aber anders geht es nicht. –

+0

$ (Dokument) .ready (Funktion() { $ (". Comments_link"). Click (Funktion (e) { e.preventDefault(); $ (". Abschnitt"). Toggle(); }); }) ----> Verhindern der Standard löste es. –

-1

Angenommen, dies ist ein Problem mit turbolinks, können Sie dieses Problem beheben, indem Sie die Standardaktion auf dem Klick in den Ereignishandler zu verhindern (was eine gute Idee ist jedenfalls):

$(document).ready(function(){ 
    $(".comments_link").click(function(e){ 
    e.preventDefault(); 
    $(".section").toggle(); 
    });        
}) 
+1

Danke. Endlich gelöst! Aber muss ich es jedes Mal tun, wenn ich jquery zu einem Link hinzufüge oder gibt es einen spezifischeren Weg? Danke nochmal! –

+0

Wenn Sie möchten, dass der Link sich nicht wie ein Link verhält, ist dies eine gute Idee. Sie können dies für alle Links tun, z. alle Links mit '" # "' als href, wie '$ (" a [href = '#'] "). click (function (e) {e.preventDefault()}) - aber ich denke es ist besser zu sei explizit und habe das in jedem Event-Handler. – smathy

+1

Okay.Thank again.You sind eine Zeitersparnis :) –