2008-09-23 19 views
11

उदाहरण के लिए कहें कि मैं एक फ़ंक्शन लिख रहा था जिसे एकाधिक तर्क प्रकारों को स्वीकार करने के लिए डिज़ाइन किया गया था:यह पता लगाने का सबसे अच्छा तरीका क्या है कि दिया गया जावास्क्रिप्ट ऑब्जेक्ट एक डोम एलिमेंट है या नहीं?

var overloaded = function (arg) { 
    if (is_dom_element(arg)) { 
     // Code for DOM Element argument... 
    } 
}; 

is_dom_element को लागू करने का सबसे अच्छा तरीका क्या है ताकि यह एक क्रॉस-ब्राउज़र में सटीक तरीके से काम कर सके?

उत्तर

20

jQuery नोड टाइप प्रकार की जांच करता है। तो आपके पास होगा:

var overloaded = function (arg) { 
    if (arg.nodeType) { 
     // Code for DOM Element argument... 
    } 
}; 

हालांकि यह सभी डीओएम ऑब्जेक्ट्स का पता लगाएगा, न केवल तत्वों। तुम अकेले तत्वों चाहते हैं, कि होगा:

var overloaded = function (arg) { 
    if (arg.nodeType && arg.nodeType == 1) { 
     // Code for DOM Element argument... 
    } 
}; 
+0

बढ़िया, अगर यह jQuery के लिए पर्याप्त है तो यह मेरी आवश्यकताओं के लिए ठीक होना चाहिए। धन्यवाद! –

4

शायद यह यहाँ एक:

node instanceof HTMLElement 

कि अधिकांश ब्राउज़र में काम करना चाहिए। अन्यथा आपको इसे बतख करना होगा (उदाहरण के लिए typeof x.nodeType != 'undefined')

+1

'HTMLElement' एक निर्माता समारोह किसी भी मानक से सुलभ होने के लिए निर्धारित नहीं है के रूप में, और यह IE में, नहीं है संस्करण 8 से पहले – bobince

+1

@ बॉबन्स: एचटीएमएलमेंट को डीओएम स्तर 2 में परिभाषित किया गया है। आईई 7 और इससे पहले इसका समर्थन नहीं है इसका मतलब यह नहीं है कि यह मानकीकृत नहीं है। 'Exampleof' का उपयोग नहीं करने का कारण यह है क्योंकि यदि आप क्रॉस-फ्रेम विकास कर रहे हैं तो यह काम नहीं करेगा। –

+0

असल में, तथ्य यह है कि यह क्रॉस-फ्रेम काम नहीं करता है, कुछ मामलों में भी लाभ हो सकता है: आम तौर पर, विदेशी नोड्स को विशेष उपचार (यानी आयात) की आवश्यकता होती है ताकि वे स्थानीय कोड के समान कोड-पथ का उपयोग न कर सकें .. –

0

के बारे में क्या
obj instanceof HTMLElement 
+1

यह सुनिश्चित नहीं है कि यह कभी भी स्पष्टीकरण के साथ क्यों कम किया गया था, लेकिन यह भी काम करता है और एक जादू संख्या से अधिक विश्वसनीय लगता है। –

+3

यह उत्तर पूरी तरह से अनावश्यक है क्योंकि आर्मीन ने पहले एक ही चीज़ पोस्ट की थी, और उस उत्तर पर बॉबन्स की टिप्पणी से संकेत मिलता है कि यह अविश्वसनीय है। मेरा जवाब अविश्वसनीय नहीं है, कि "जादू संख्या" [विनिर्देशन में परिभाषित] है [http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247)। – Jim

+1

यह क्रोम में काम नहीं करता है क्योंकि HTMLElement एक समारोह है – bjornl

संबंधित मुद्दे

 संबंधित मुद्दे