2010-12-10 7 views
3

Angenommen, eine Funktion akzeptiert ein Argument, ob ein DOM-Element oder JSON, die in jQuery-Objekt eingewickelt sind oder nicht, so wie man es von einander zu unterscheiden?Testen Sie, ob ein DOM-Element oder JSON

+0

FYI, was Sie ein JSON-Objekt aufrufen tatsächlich ein JavaScript-Objekt genannt wird; JSON ist lediglich eine Notation eines JS-Objekts (JavaScript Object Notation). –

+1

JSON muss ein einfacher Text sein. Ansonsten ist es nicht mehr JSON: -? –

+0

@ Álvaro - In der Tat, und es muss [die Spezifikation] (http://json.org/) entsprechen. –

Antwort

2

Sie wahrscheinlich etwas wie folgt aussehen:

var get_unknown_element = function(element) { 
     var ele  = element, 
      type = Object.prototype.toString.call(ele); 

     // string as passed in, we just assume it to be a jQuery (or querySelectorAll) selector string 
     if(type === '[object String]') {     
      return (function(e){ 
       return e.length ? e : null; 
      }($(ele))); 
     } 
     // an object was passed in, if we have an jquery object & length > 0, just return it 
     else if(type === '[object Object]' && ele.jquery && ele.length) { 
      return ele; 
     }  
     // native DOM object (node) was passed in, just call the jQuery constructor on it & return   
     else if(/^\[object HTML/.test(type)) { 
      return $(ele); 
     } 
     // return null on no match 
     else return null;       
}; 
Verwandte Themen