2011-02-17 9 views
11

मैं एक jquery फ़ंक्शन लिखना चाहता हूं जो या तो डोम तत्व या उसकी आईडी इनपुट के रूप में स्वीकार करता है:jquery: परीक्षण करें कि इनपुट चर डोम तत्व है या नहीं

function myfunction(myinput){ 
// pseudocode: 
// if (myinput is dom element){ 
// var myID = $(myinput).attr('id'); 
// } else { 
// var myID = myinput; 
// } 

// Do stuff with myID ... 

} 

प्रश्न: मैं कैसे बता सकता हूं कि myinput एक dom तत्व है ???

+0

की तरह कुछ यह पहले से ही कहा गया है: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you- चेक-अगर एक जावास्क्रिप्ट वस्तु है-एक-डोम-वस्तु –

उत्तर

20

यह जाँच दूसरी तरह के आसपास करना आसान है - जाँच अगर यह एक स्ट्रिंग है यदि ऐसा है तो इसका इस्तेमाल किसी और एक आईडी एक डोम नोड/तत्व के रूप में यह इलाज और इसे संभाल के रूप में अगर यह एक था प्राप्त करने के लिए ।

function myfunction(myinput) { 

    var myId; 

    if (typeof myinput == 'string'){ 
     myId = myinput; 
    } else { 
     myId = myinput.id; // myinput.id is enough 
    } 

    // do something 

} 

या तुम सच में अगर यह HTMLElement है के खिलाफ जांच करने के लिए चाहते हैं तो हर डोम HTML तत्व HTMLElement सार इंटरफ़ेस फैली हुई है। HTMLElement पर अधिक जानकारी के लिए Check MDC

... 

    if (myinput instanceof HTMLElement){ 
     myId = myinput.id; // myinput.id is enough 
    } else { 
     myId = myinput; 
    } 

    ... 

अंत में यह वास्तव में कोई फर्क नहीं पड़ता ... आपकी कॉल!

function myfunction(myinput){ 

if (myinput.nodeType){ 
    var myID = $(myinput).attr('id'); 
} else { 
    var myID = myinput; 
} 

// Do stuff with myID ... 

}

अधिक जानकारी के बारे में nodeType:

टॉम

+0

धन्यवाद! मुझे ठीक इसी की आवश्यकता थी। – moondog

+2

HTMLElement कुछ ब्राउज़र (शायद IE8) में मेरे लिए काम नहीं कर रहा था तो अब मैं 'nodeType' –

+0

के लिए जाँच कर रहा हूँ आप' $ (myinput) कर सकता है '' .length> 0''' अगर तत्व में मौजूद है को देखने के लिए डोम। इस समाधान के लिए – designcise

-2

if(myinput instanceof domElement) alert("Yes");

+4

नहीं, वहाँ 'domElement' जैसी कोई वर्ग है। – BoltClock

+3

आपका मतलब क्या है 'एलिमेंट' या 'नोड';) – yckart

6

आप इस तरह अपने कार्य को लागू करेंगे।

+0

+1। jQuery कोड डीओएम नोड्स को बाहर करने के लिए इसके isPlainObject फ़ंक्शन में इसका उपयोग करता है। – sma

0

मुझे आश्चर्य है अगर एक अच्छा त्रिगुट काम करेगा, इस

var myID = $(myInput).attr('id') ? $(myInput).attr('id') : myInput; 
संबंधित मुद्दे