2012-12-01 15 views
21

Mögliche Duplizieren:
jQuery test for whether an object has a method?Prüfen, ob die Funktion vor dem Anruf vorhanden ist?

ich festlegen möchten, wenn die Funktion vor dem Aufruf Exists Javascript können Sie mir helfen, wie dies tun und

$(document).ready(function() { 
    $(".cs-text-cut").lettering('words'); 
}); 
+0

@Alexei: Nun, nach dem Beispiel zu urteilen, denke ich, es ist genau das gleiche. Und selbst wenn nicht, ist die Lösung (unter Verwendung von $ .isFunction) immer noch die gleiche und ist leicht übertragbar. –

+0

@FelixKling, du hast recht, genau dup. Irgendwie interpretiert es sich breit (als ob man ein Element, nicht ein Ergebnis von jQuery selector) benutzt hätte. –

Antwort

65

ich auf diesem Skript anwenden Angenommen, Sie möchten überprüfen und sicherstellen, dass lettering existiert, versuchen Sie Folgendes:

http://api.jquery.com/jQuery.isFunction/

Hier ist ein Beispiel:

if ($.isFunction($.fn.lettering)) { 
    $(".cs-text-cut").lettering('words'); 
} 
+1

+1. Für die Verwendung von 'isFunction' ist zu beachten, dass die Bedingung falsch ist - es sollte kein Fenster überprüft werden. –

+1

Folgendes funktioniert wie erwartet: 'if ($ .isFunction (window.lettering)) {' Wenn Sie eine Kurzschrift oder besser Weg haben, zögern Sie nicht mich zu informieren, und ich werde den Vorschlag aktualisieren. – gregwhitworth

+3

Die Funktion befindet sich tatsächlich in '$ .fn.lettering', nicht in' window.lettering'. –

6

Wenn es die lettering Funktion Sie testen möchten, können Sie dies wie folgt tun;

$(document).ready(function() { 
    var items = $(".cs-text-cut"); 
    if (items.lettering) { 
     items.lettering('words'); 
    } 
}); 

Oder, wenn Sie absolut sicherstellen möchten, items.lettering ist eine Funktion, bevor es zu nennen, können Sie dies tun:

$(document).ready(function() { 
    var items = $(".cs-text-cut"); 
    if (typeof items.lettering === "function") { 
     items.lettering('words'); 
    } 
}); 

Oder, wenn Sie wirklich so die Umwelt nicht kontrollieren Sie nicht wirklich wissen, ob die Beschriftung Funktionsaufruf arbeiten oder nicht geht und vielleicht sogar eine Ausnahme auslösen, können Sie nur einen Ausnahmebehandler um es ausdrückte:

$(document).ready(function() { 
    try { 
     $(".cs-text-cut").lettering('words'); 
    } catch(e) { 
     // handle an exception here if lettering doesn't exist or throws an exception 
    } 
}); 
+1

+1. vernünftige Art der Überprüfung der Eigenschaft auf das Ergebnis von jQuery auswählen. Das Hinzufügen von isFunction-Check ist zwar nett, aber nicht notwendig. –

+0

Definitiv mein bevorzugter Weg, weil es nicht auf zusätzliche Bibliothek angewiesen ist. – cfx

12

verwenden, wenn functi überprüfen auf existiert.

<script> 
if (typeof function_name == 'function') { 
     //function_name is a function 
} 
else 
{ 
//do not exist 
} 
</script> 
0

typeof $({}).lettering == 'function' oder $.isFunction($({}).lettering) sollte für eine boolean zurückgeben, ob sie noch verfügbar ist oder nicht.

Verwandte Themen