यदि दो तत्व समान हों तो परीक्षण करें


87

मुझे पहले इस पर काम करने का संदेह होगा:

if ($('#element') == $('#element')) alert('hello');

लेकिन ऐसा नहीं है। यदि तत्व समान हैं तो कोई परीक्षण कैसे करेगा?

जवाबों:


138

1.6 के रूप में आप अब बस कर सकते हैं:

$element1.is($element2)

7
यह Jquery के सभी हाल के संस्करणों के लिए सबसे अच्छा जवाब है।
क्रिस जेनेस

एक और एक काश मैं हर बार जब मैं एक ही सवाल Googling और इस उत्तर ढूंढना अंत के लिए वोट दें सकता है
freefaller

75

यह काम करना चाहिए:

if ($(this)[0] === $(this)[0]) alert('hello');

ऐसा होना चाहिए

if (openActivity[0] == $(this)[0]) alert('hello');

3
क्या आपका दूसरा उदाहरण === और नहीं == होना चाहिए, ठीक से अपना पहला उदाहरण?
प्रॉसप्रस जू

3
यह उत्तर पुराने जक्वरी के पुराने संस्करणों में सही हो सकता है, लेकिन ज्यादातर लोग शायद एक ऐसे संस्करण का उपयोग कर रहे हैं जो समर्थन करता है$.is
क्रिस जेनेस


12

जैसा कि किसी ने पहले ही बताया था, दो अलग-अलग क्षणों में लिपटे एक ही एचटीएमएल तत्व दो अलग-अलग jQuery उदाहरण उत्पन्न करते हैं, इसलिए वे कभी भी बराबर नहीं हो सकते।

इसके बजाय, लिपटे हुए एचटीएमएल तत्वों की तुलना इस तरह से की जा सकती है, क्योंकि वे जिस मेमोरी स्थान पर रहते हैं, वह वैसा ही होता है यदि यह एचटीएमएल तत्व है, तो:

var LIs = $('#myUL LI');
var $match = $('#myUL').find('LI:first');

alert(LIs.eq(0) === $match); // false
alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :)

सादर!


5

मैं खुले को चिह्नित करने के लिए addClass () का उपयोग करूंगा और आप आसानी से जांच सकते हैं।


3

9 साल बाद, jQuery के बिना

यदि दो तत्व समान हैं, तो दो तत्वों में समान सूचक होना चाहिए। इस प्रकार,

document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false

0

जैसे सिल्की या सैंटी ने कहा, एक यूनिक आईडी या क्लास टेस्ट करने का सबसे आसान तरीका होगा। कारण यदि आपके बयानों की तरह काम नहीं करते हैं तो आप उम्मीद करेंगे क्योंकि यह 2 वस्तुओं की तुलना कर रहा है और यह देख रहा है कि क्या वे स्मृति में समान वस्तु हैं।

चूँकि यह हमेशा $ (इस) द्वारा बनाई जा रही एक नई वस्तु है, वे कभी भी एक दूसरे के बराबर नहीं हो सकते। इसलिए आपको ऑब्जेक्ट की संपत्ति पर परीक्षण करना होगा। यदि कोई खुला तत्व आपको अलग-अलग सामग्री की गारंटी दे सकता है जिसकी आप जांच कर सकते हैं, तो आप कोई अनोखी आईडी / क्लास नहीं ले सकते।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.