2013-05-27 28 views
0

我正在开发一个用例,在用户检查/取消选中复选框后需要执行一些操作。IE -7/8,事件目标不起作用

例子:

功能片段:

<script> 
function toggleAgreement(event) { 
if(event.target == 'some pre-defined ID') { 
//do action; 
} 
</script> 

问题:

此功能在Firefox/Chrome浏览器工作良好,即使在IE9它的工作。就在IE-7/8中,它不起作用。

在观察IE脚本控制台时,这些错误显示在 - > bodyOnload(不是当我触发这个特定的复选框时)。

“对象不支持属性或方法 'querySelectorAll'” Iframe.html的,行x标记Y

当点击这个链接,我能看到这一点:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML><HEAD> 
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD> 
<BODY></BODY></HTML> 

我研究发现应该使用jquery的方式是: "document.querySelectorAll('.className')"

事情是,即使这个问题在IE9中占上风,为什么不抛出上述错误?

+0

http://www.quirksmode.org/js/events_properties.html#target – CBroe

回答

0

event.target与IE不兼容。试试这个(它是跨浏览器兼容):

<script> 
    function toggleAgreement(event) { 
     var evt = e || window.event; // this assigns evt with the event object 
     var current = evt.target || evt.srcElement; // this assigns current with the event target 
     if(current == 'some pre-defined ID') { 
      //do action; 
     } 
    } 
</script> 
+0

工作就像魅力,谢谢:) –

0

您是否允许使用jQuery?它使得事件的处理变得更加容易(对于早期的IE版本支持,必须采取1.x版本)。用jQuery是那么容易,因为:

$("#myCheckbox").click(function() { 
    if ($(this).is(":checked")) { 
    // Do whatever you want 
    } 
}); 

没有必要使用“活动对象”了,被点击复选框在提供的“$(本)”对象中可用。但如果你需要的话,它是available