আমি প্রথমে এটি কাজ করতে সন্দেহ করব:
if ($('#element') == $('#element')) alert('hello');
তবে তা হয় না। উপাদানগুলি একই হলে কীভাবে একটি পরীক্ষা করা যায়?
উত্তর:
এই কাজ করা উচিত:
if ($(this)[0] === $(this)[0]) alert('hello');
সুতরাং এটি করা উচিত
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
অথবা শুধুই
if (openActivity[0] == this) alert('hello');
(একটি নতুন jQuery উদাহরণ ছাড়াই ;-)
যেমনটি ইতিমধ্যে কেউ বলেছে, দুটি ভিন্ন মুহুর্তে মোড়ানো একই এইচটিএমএল উপাদান দুটি পৃথক jQuery উদাহরণ উত্পন্ন করে, তাই তারা কখনই সমান হতে পারে না।
পরিবর্তে, মোড়ানো এইচটিএমএল উপাদানগুলির সাথে সেভাবে তুলনা করা যেতে পারে, যেহেতু তারা যে মেমোরি অবস্থানটি ধারণ করে এটি একই HTML উপাদান হিসাবে একই, তাই:
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 :)
শুভেচ্ছান্তে!
9 বছর পরে, jQuery ছাড়াই
যদি দুটি উপাদান একই হয় তবে দুটি উপাদানের অবশ্যই একই পয়েন্টার থাকতে হবে। এইভাবে,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
সিল্কি বা সান্টি যেমন বলেছিল, একটি অনন্য আইডি বা শ্রেণি পরীক্ষা করার সহজতম উপায় হবে। আপনার যদি বিবৃতিগুলি আপনার প্রত্যাশার মতো কাজ না করে তা কারণ এটি 2 টি বস্তুর তুলনা করে এবং মেমোরিতে একই জিনিস কিনা তা দেখার জন্য।
যেহেতু always (এটি) দ্বারা সর্বদা এটি একটি নতুন অবজেক্ট তৈরি হয়, তারা কখনই একে অপরের সমতুল্য হতে পারে না। এজন্য আপনাকে অবজেক্টটির কোনও সম্পত্তি পরীক্ষা করতে হবে। আপনি যদি কোনও ওপেনঅ্যাক্টিভিটি উপাদানটির বিরুদ্ধে পরীক্ষা করতে পারেন এমন আলাদা আলাদা সামগ্রী থাকার গ্যারান্টি দেওয়া হয় তবে আপনি কোনও অনন্য আইডি / শ্রেণি দিয়ে পালাতে পারবেন না।