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
}
}
}
答案 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?