2016-11-29 2 views
-3

Ich habe zwei .js-Dateien. Auf der ersten J-Datei i erklären und eine Funktion wie folgt auszuführen:jQuery - Funktion nicht definiert

(function($){ 
    function something(){ 
    //code here 
    } 

    $(document).ready(function(){ 
    something(); 
    }); 
})(jQuery); 

Außerdem möchte ich die etwas() Funktion in der zweiten Js auszuführen. Mein Code ist folgende:

(function($){ 
    $(document).ready(function(){ 
    //more code 
    something(); 
    //more code 
    }); 
})(jQuery); 

Wenn jedoch das Programm ausgeführt wird, erhalte ich folgende Fehlermeldung: Uncaught Reference: etwas nicht definiert ist (...)

Mögliche Lösung: I gelöst das Problem erklärt die Funktion als:

(function($){ 
    this.something = function(){ 
    //code here 
    } 

})(jQuery); 

Ist das 100% richtig?

+0

Können Sie zeigen, wo genau Sie 'eins' definiert haben? Sieht nach einem Scoping-Problem aus. –

+0

Bitte erläutern Sie Ihre Frage weiter ... –

+2

Es ist ein Problem mit dem Bereich - verschieben Sie die Definition von 'something()' * außerhalb * des Abschlusses. –

Antwort

0

Es ist normal, dass Sie Ihre Funktion something in einem IIFE deklariert haben, so dass Sie es nicht außerhalb Ihres Blocks verwenden können. Versuchen Sie, Ihre Funktion außerhalb (function($) ...)() Block zu deklarieren.

+0

Vielen Dank für Ihre Antwort. Ich habe das versucht, aber ein neuer Fehler ist aufgetreten: "Uncaught TypeError: $ ist keine Funktion (...)". Ich habe gelesen, dass wenn die Funktion wie folgt ausgeführt wird: $ ("selector"). function1(), dann deklarieren wir es wie folgt: $. fn.function1() {}. In meinem Fall, aber ich rufe nur die Funktion ohne einen Selektor.Wie soll ich es deklarieren? – themis93

+0

Am Anfang der Datei, vor '$ (function() ...)() "Aber ich denke, dass Sie MS-Bereiche missverstehen, sollten Sie [hier] (https://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/) schauen. Btw,' $ .fn.function1() {} 'ist eine Art von jQuery-Funktion-Plugin, es ist kein Standard-js, sei vorsichtig – soywod

2

Sie können eine Funktion nicht innerhalb eines Bereichs definieren und versuchen, diese Funktion in einem anderen Bereich zu verwenden. Sie haben nicht verstanden, wie Funktionen und Bereiche in JavaScript funktionieren.

Have a look at this.

+2

Wenn Sie zum Schließen stimmen, antworten Sie bitte nicht. Dies sollte technisch ein Kommentar sein. PS: Ich habe nicht runtergestimmt. –

+0

Ich habe gerade versucht, dir zu helfen. –

+0

@Alex du bist richtig, aber auf falsche Frage antworten :) – anshuVersatile