2015-07-28 9 views
5

Dieses Snippet funktioniert in der Konsole aber weder in Skript-Tags noch in angehängten js-Datei.Der jquery-Code funktioniert auf Konsole, aber nicht in Skript-Tags oder in angehängter js-Datei

+0

Bitte mindestens Kopie + den Code für die Seite fügen Sie Ihre Verwendung auf , und klicken Sie auf F12, um festzustellen, ob in der Entwicklerkonsole ein Fehler aufgetreten ist. –

+0

Welchen Fehler erhalten Sie, wenn Sie im Skript-Tag oder in der angehängten js-Datei ausgeführt werden? – D4V1D

+1

Silly mich, aber warum diese Frage bekommen zwei upvotes ??? –

Antwort

7

warten Sie auf das DOM bereit sein, wenn Sie Ihre Event-Handler aufrufen:

jQuery(function($) { // this does the trick and also makes sure jQuery is not conflicting with another library 
    $(".filter-close").click(function(){ 
     $(this).parent().remove(); 
    }); 
}); 

wenn eine andere JavaScript-Bibliothek, wir $ .noConflict() aufrufen zu vermeiden Namespace Schwierigkeiten möchte. Wenn diese Funktion aufgerufen wird, ist die Verknüpfung $ nicht mehr verfügbar und zwingt uns jedes Mal jQuery zu schreiben, wenn wir normalerweise $ schreiben würden. jedoch bestand die Behandlungsroutine zum .ready() Methode kann ein Argument, das das globale jQuery Objekt übergeben wird. Dies bedeutet, dass wir das Objekt im Rahmen unserer .ready() -Prozedur umbenennen können, ohne anderen Code zu beeinflussen

Documentation for .ready() method

+0

Da OP besagten Code in der Konsole funktioniert, können wir annehmen, dass '$' sich bereits auf jQuery bezieht, aber das ist immer noch eine gute Information –

+1

@ A.Wolff: Klar, ich wollte nur etwas hervorheben, das die anderen antwortet nicht erwähnt :) – D4V1D

-1

Vielleicht mit filter-close Klasse das Element existiert zum Zeitpunkt des diese Funktion im DOM nicht nennen. Ich nehme an, dass Sie Elemente dynamisch zu DOM hinzufügen. Bist du?

+0

Dies ist keine Antwort, es ist nur ein Kommentar. – D4V1D

+1

Ich denke, es ist beides. –

+0

@UjwalRatra - es kann beides sein, aber SO Leitlinien klar, dass eine Antwort die Frage beantworten muss, wenn Sie Codebeispiel von was zu tun, wenn es dynamisch hinzugefügt wurde, dann ist es vielleicht eine Antwort - sonst ist es ein Kommentar nur –

2

Es kann ein Problem der nicht vorhanden ist, in dem DOM sein, wenn die Event-Handler angebracht ist.

so etwas wie dieses Versuchen:

$(document).ready(function() { 
    // Handler for .ready() called. 

    $(".filter-close").click(function(){ 
     $(this).parent().remove(); 

    }); 

}); 

Die $ .ready() (Link unten) sorgt dafür, dass es versuchen tut, den Code rufen Sie den Handler hinzuzufügen, bevor die DOM gerendert wird, ähnlich wie OnLoad.

Documentation for JQuery .ready() method

Es gibt auch potentielle Bibliothek Konflikte (siehe @ D4V1D Antwort zum Beispiel dafür), aber wir können nicht sicher sagen, ohne zu wissen, welche Fehlermeldung in der Konsole erscheinen (falls vorhanden) und im Idealfall mehr über den umgebenden Code.

Bitte drücken Sie F12 und sehen, was in der Konsole und/oder Netzwerkplatte gedruckt wird, oder google „browser dev-Konsole“, wenn F12 nichts tut.

Aber, wie gesagt, es in der Konsole funktioniert, so dass ich nehme an, Sie dev Konsole bedeuten und dass es in der Tat nur ein Timing-Problem, so unwahrscheinlich, dass ein Konflikt (wenn auch vielleicht noch Syntaxfehler irgendwo anders auf der Seite)

Verwandte Themen