测试两个元素是否相同

Jon*_*nah 82 javascript jquery

我会怀疑这首先工作:

if ($('#element') == $('#element')) alert('hello');
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.如何测试元素是否相同?

chr*_*ton 128

从jquery 1.6开始,你现在可以简单地做到:

$element1.is($element2)
Run Code Online (Sandbox Code Playgroud)

  • 这是所有最新版本的Jquery的最佳答案. (7认同)

epa*_*llo 74

这应该工作:

if ($(this)[0] === $(this)[0]) alert('hello');
Run Code Online (Sandbox Code Playgroud)

这应该是这样的

if (openActivity[0] == $(this)[0]) alert('hello');
Run Code Online (Sandbox Code Playgroud)

  • 你的第二个例子不应该是===而不是==,要正确反映你的第一个例子吗? (3认同)
  • 这个答案可能在旧版本的jquery中是正确的,但大多数人可能正在使用支持`$ .is`的版本 (3认同)

Fra*_*ani 14

要不就

if (openActivity[0] == this) alert('hello');
Run Code Online (Sandbox Code Playgroud)

(没有新的jQuery实例;-)


Ema*_*nde 12

正如有人已经说过的那样,包含在两个不同时刻的相同HTML元素会生成两个不同的jQuery实例,因此它们永远不会相等.

相反,包装的HTML元素可以通过这种方式进行比较,因为如果它们是相同的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 :)
Run Code Online (Sandbox Code Playgroud)

最好的祝福!


San*_*nti 5

我会使用addClass()标记打开,你可以轻松地检查.


all*_*kim 5

9 年后,没有 jQuery

如果两个元素相同,则两个元素必须具有相同的指针。因此,

document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Run Code Online (Sandbox Code Playgroud)