Javascript将对象与元素进行比较

时间:2013-12-19 18:48:39

标签: javascript jquery

http://jsfiddle.net/PhilFromHeck/KzSxT/

在这个小提琴中,您可以在Javascript第38行看到我试图进行无效的比较。我相信它是因为其中一个变量是一个Object,另一个是Element;有没有人有任何建议,我怎么能找到这两者之间的匹配?

menuID[0] = document.getElementById('menuOne'); 
menuID[1] = document.getElementById('menuTwo'); 
menuID[2] = document.getElementById('menuThree'); 
menuID[3] = document.getElementById('menuFour'); 
$('.menu').mouseenter(function () {
  for (var i = 0; i < 3; i++) {
    if(menuID[i] == $(this)){
      //this condition is not met, there's an alert which will add more detail in the fiddle
    }
  }
}

3 个答案:

答案 0 :(得分:4)

方法document.getElementById返回一个DOM元素而不是jQuery对象。在mouseenter事件处理程序this中也引用了一个DOM元素。

因此,为了比较它们,您不应将this转换为jQuery对象:

if (menuID[i] === this) { ... }

答案 1 :(得分:2)

你想使用jQuery的.is()

if($(this).is(menuID[i])){

答案 2 :(得分:0)

我在这里看到的一些问题:

简单来说,在你的jsfiddle中,你列出的前4行代码在底部块运行之前没有运行。我不确定为什么你有一个附加到window.onload和document.ready()函数的init函数;但是你要确保init运行。

其次;正如VisioN所说,我认为主要问题是你试图将DOM元素$(this)周围的jQuery包装器与DOM元素(getElementById的结果)进行比较。正如他所说,this == menuID[i]将起作用。

在设计层面,为什么不简单地使用id来识别元素? this.id会给你身份证明;为什么不简单地用它来确定你正在看哪个菜单div?