2 Stimmen

Wie man erkennt, ob obj jquery oder einfaches Javascript ist

Dies ist wahrscheinlich eine dumme Frage, aber gibt es eine Möglichkeit, programmgesteuert zu sagen, wenn das Objekt Jquery oder einfach nur Javascript ist?

Zum Beispiel:

Utils.Listbox.MoveItemsUp = function(listbox) {

    if(listbox.isJquery()) {
        listbox.each(function(){}); 
    }
    else {
        for(var i = 0; i < listbox.options.length; i++){}
    }
};

8voto

Marco Mariani Punkte 13284

JQuery-Objekte haben eine Eigenschaft namens "jquery":

>>> $('body').jquery
"1.5.2"

1voto

Jimmy Sawczuk Punkte 13208

JQuery es nur Javascript. Ich schätze, Sie könnten auf die Existenz einer jQuery-Funktion testen:

if (foo.each)
{
    foo.each(function(...
}
else
{
    $(foo).each(function(...
}

1voto

Chad Punkte 18570

Eine Möglichkeit ist die Verwendung von jQuerys $.isPlainObject Funktion ( doc ) So erfahren Sie, ob es sich um ein Objekt handelt, das mit {} ou new Object wird ein jQuery-Objekt false zurückgeben. Beachten Sie jedoch auch, dass ein Array, ein String und Funktionen ebenfalls false zurückgeben:

var obj = {};
var $obj = $('div');

$.isPlainObject(obj); //returns true
$.isPlainObject($obj); //returns false

0voto

RobertPitt Punkte 55763

Was Sie sich merken sollten, ist, dass immer, wenn Sie innerhalb eines Rückrufs das Objekt this ist immer eine native Entität und kein Jquery-Objekt.

zum Beispiel:

a = $('a').each(function(){
    //'this' is ALWAYS an native object
});

a ist immer eine Instanz von jQuery, es sei denn, Sie verwenden eine spezielle Methode, die einen Typ wie json object, boolean, string usw. zurückgibt.

Wenn Sie eine Variable aus einer Funktion aufrufen, die sich Ihrer Kontrolle entzieht, und Sie wissen möchten, ob es sich um ein jQuery-Objekt handelt, können Sie Folgendes tun:

if(!listbox || !listbox.jquery)
{
     listbox = $(listbox)
}
//the variable is now always going to be a jQuery object.

Der Grund dafür ist, dass jquery immer einen Verweis auf seine Version in einem ausgewählten Kontext speichert

0voto

Jim Rubenstein Punkte 6797

Um zu testen, ob ein Objekt ein jQuery-Objekt ist, überprüfen Sie die jquery Attribut davon. also:

<script>
Utils.Listbox.isJquery = function()
{
    return typeof this.jquery != 'undefined';
}
</script>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X