2012-09-27 56 views
0
http://www.luxuryfurclothing.com/ 

我不想点击这些子项(Data Security Solution,最后一个菜单)的子项目(需要解决方案,业务规模解决方案,行业解决方案)。为什么JavaScript代码在IE8中失败?

我添加的代码在页面的底部:

<script type="text/javascript"> 
    jQuery.noConflict(); 
    var eles = jQuery('li.category51 ul li.level1>a'), i; 

    for (i = 0; i < eles.length; i++) { 
     eles[i].onclick = function(event) { 
      event.preventDefault(); 
     }; 
     eles[i].onmouseover = function() { 
      this.style.cursor="auto"; 
     }; 
    } 
</script> 

这在Firefox和Chrome,但不是IE8。

+0

尝试添加返回false;到onclick。 – Alex

+0

显示你的HTML标记 – Curt

+0

首先,如果你有一个jQuery对象,使用jQuery方法来处理事件附件,一个lales.eclick(函数c(){...});' –

回答

0

1)如果你想li.level1>a在IE8的工作,您必须在文件的开头指定这个DOCTYPE:

<!DOCTYPE html> 
<html> 
... 

如果你问你的文档被解释为它不会工作xhtml1。此外,很少有理由使用XHTML。

2)正如Shusi所述,您不能在本机IE事件中调用preventDefault。解决的办法是使用jQuery设施:

$('li.category51 ul li.level1>a').click(function(event) { 
    event.preventDefault(); // this is a jquery wrapped event 
}).mouseover(function() { 
    this.style.cursor="auto"; 
}); 
+0

如果我不使用li.level1> a.is有一种方法来获得结果具有相同的效果。谢谢 – stack01

0

IE不支持preventDefault

你应该使用event.returnValue = false;为IE

实现:

if(event.preventDefault){ 
    event.preventDefault(); 
} 
else{ 
    event.returnValue = false; 
} 
return false; 

因为你使用jQuery有是一种更简单的方式

jQuery.noConflict(); 
var eles = jQuery('li.category51 ul li.level1>a'), i; 
eles.click(function(event) { 
     return false; 
    }).mouseover(function() { 
     this.style.cursor="auto"; 
    }); 
0

为什么不仅仅使用jQuery来实现跨浏览器的兼容性,而不是使用jQuery和原生javascript的混合(至少对于事件处理)?

jQuery('li.category51 ul li.level1>a') 
    .click(function(event){ 
    event.preventDefault(); 
    }) 
    .mouseenter(function(event) { 
    $(this).css('cursor', 'auto'); 
    }); 

...为什么不使用CSS设置光标?

li.category51 ul li.level1>a { 
    cursor: auto; 
} 
相关问题