Überprüfen ob jQuery eine bestimmte Funktion enthält

BlubBlub

Mitglied
Hi gibt es die Möglichkeit zu überprüfen, ob jQuery eine bestimmte Funktion hat.
Man kann bei den nativen javascript Aufrufen mit window.getSelection beispielsweisen
prüfen, ob das window Objekt die Funktion getSelection hat oder nicht.
Gibt es auch sowas ähnliches für jQuery a la jQuery.irgendeineFunktion ?
 
Das geht auf die gleiche Weise. Oder verstehe ich dich falsch?

Javascript:
if(jQuery.ajax)
	alert('Ja');

if('ajax' in jQuery)
	alert('Ja');

//Oder für Methoden
if(jQuery.fn.hide)
	alert('Ja');

if('hide' in jQuery.fn)
	alert('Ja');
 
Code:
	alert('jQuery.dialog ' + jQuery.dialog);
	alert('jQuery.fn.dialog ' + jQuery.fn.dialog);
		
	$(foo).dialog();


das erste alert gibt mir undefined aus, also handelt es sich bei dialog() um eine Methode und nicht um eine Funktion.

das zweite altert gibt mir folgendes aus:
function (d) {
var e = typeof d === "string", f = Array.prototype.slice.call(arguments, 1), h = this;
d = !e && f.length ? b.extend.apply(null, [true, d].concat(f)) : d;
if (e && d.charAt(0) === "_") {
return h;
}
e ? this.each(function () {var g = b.data(this, a), i = g && b.isFunction(g[d]) ? g[d].apply(g, f) : g;if (i !== g && i !== j) {h = i;return false;}}) : this.each(function () {var g = b.data(this, a);g ? g.option(d || {})._init() : b.data(this, a, new c(d, this));});
return h;
}

Nun versteh ich aber nicht warum er mir sowas komische ausgibt anstelle einfach nur 'function' wie beispielsweise bei alert(window.getSelection). Liegt es vielleicht daran, dass dialog aus jQuery UI kommt und nicht von jQuery?
 
Nun versteh ich aber nicht warum er mir sowas komische ausgibt anstelle einfach nur 'function' wie beispielsweise bei alert(window.getSelection).

Der gibt dir nichts komisches aus, sondern den Code der Funktion. Das liegt daran, dass Funktionen Objekte sind und entsprechend eine ToString-Methode haben.

Javascript:
alert(function() {alert('test');}.toString());

Bei mir gibt alert(window.getSelection) nicht einfach nur 'function' aus sondern

function getSelection() {
[native code]
}

Also ebenfalls den Code der Funktion. Da die nativen Browserfunktionen natürlich in C/C++ geschrieben sind, kann er dir als Funktions-Rumpf nur einen Platzhalter anzeigen.
 
Okay das heißt dann, wenn ich überprüfen will, ob eine Funktion vorhanden ist, muss
ich das so machen:

Code:
if('dialog' in jQuery.fn)
 alert('vorhanden');

und nicht so:

Code:
if(jQuery.fn.dialog == 'function')
 alert('vorhanden');

ich werd das auch glech mal ausprobieren.
 
Einfach so (wie in meinem ersten Post):

Javascript:
if(jQuery.fn.dialog)
    alert('vorhanden');

Weil undefined zu false ausgewertet wird.

Wenn du unbedingt auf "function" prüfen willst, dann so

Javascript:
if(typeof(jQuery.fn.dialog) == 'function')
    alert('vorhanden');

Aber wozu die extra bytes über die Leitung schicken? Jeder macht es so, wie ich es als erstes sagte. Kürzer geht nicht.
 
Zuletzt bearbeitet:
Zurück