2014-11-25 7 views
8

Ich versuche, jQuery wie diese in meteor.js App zu verwenden.Wie verwendet man jQuery in Meteor 1.0

JS:

if (Meteor.isClient) {  
    Meteor.startup(function() { 
      $("button").click(function() { 
       $("p").toggle(); 
      }); 
      }); 
... 

oder ohne meteor.startup Funktion. Keine funktioniert.

HTML:

<button>Click</button> 
<p>Can you see me?</p> 

Ich bekomme keine Fehler und es passiert nichts, wenn ich auf die Schaltfläche klicken.

Antwort

14

Sie sollten nicht jQuery für einfaches Ereignis verwenden wie diese Handhabung, ordnet stattdessen Ereignis Meteor-Vorlagen verwenden:

HTML:

<template name="myTemplate"> 
    <button type="button">Click me !</button> 
    <p>Can you see me ?</p> 
</template> 

JS:

Template.myTemplate.events({ 
    "click button":function(event, template){ 
    template.$("p").toggle(); 
    } 
}); 
+0

Vielen Dank für Ihre Antwort folgt! Warum funktioniert mein Beispiel jquery nicht? Es sollte, oder? – Mika

+0

Meteor hat die volle Kontrolle über das DOM-Management (deshalb ist es so einfach, überhaupt damit umzugehen, oder?) Und kann nicht sicherstellen, dass Ereignisse, die Sie mit jQuery setzen, beim erneuten Rendern von Vorlagen erhalten bleiben versagt, jedenfalls bleiben Meteor-Vorlagen Zeug, um Fallstricke zu vermeiden. – saimeunt

+0

Ich denke, aber ich bin mir nicht sicher, es funktioniert nicht, weil beim Start gibt es noch keine DOM-Elemente, wird es wahrscheinlich mit.Rendered-Ereignis funktionieren – Sindis

7

Verwendung meteor list zu sehen wenn das jquery-Paket enthalten ist.
Wenn nicht, verwenden Sie meteor add jquery, um das Paket

+2

Nach Meteor Docs und Athmosphere https://atmosphherejs.com/meteor/jquery Jquery sollte automatisch installiert werden. Allerdings kann ich es nicht aufgelistet sehen. Ich habe es installiert und jetzt funktioniert jquery. Die Dokumente sind ziemlich irreführend. – Mika

+0

Ich habe die Jquery entfernt, aber der Code funktioniert weiter. – Mika

+0

Ja, es scheint, jquery ist "nur da", auch ohne eine explizite Paketinstallation. – xaxxon

3

beim Start hinzufügen, wird Ihr HTML wahrscheinlich nicht gerendert werden. Sie möchten dies auf Ihrem templated.rendered-Ereignis tun.

Aber, wie andere sagten, Sie wollen es nicht so machen.

+0

Dies ist eine korrekte Antwort hier, aber ich bin Beachten Sie, obwohl etwas offensichtlich Aufruf von $ in der IsClient-Code und nicht IsServer Block ist wichtig zu erinnern. Es ist standardmäßig in Meteor 1.0 enthalten und wird nicht in der Meteorliste angezeigt. Probieren Sie es einfach aus, aber im Client sollte es funktionieren, es sei denn, Ihre zugreifenden Template-Abhängigkeiten, also mindestens $ ("body") sollten in isClient funktionieren. – MistereeDevlord

1

Versuchen Sie, die Standard-jQuery DOM-Ready-Funktion verwenden, bevor Sie Ihren Anwendungscode schreiben, wie ...

if (Meteor.isClient) { 
    $(function() { 
     // your jQuery code here... 
    }); 
} 
Verwandte Themen