模糊事件不会在IE7和IE6中被触发

我有一个下拉菜单,单击div中的一个,显示List。

在焦点上我应该隐藏列表(即当用户点击或关注某些其他元素而不是鼠标移出时)。 因此,我明显的选择是onblur

现在JavaScript似乎在Firefox中工作,但在IE中却没有,因为我的div有一个指定高度和宽度的子div。 这在测试文件中是可重现的。 我正在使用jQuery。

这是Internet Explorer中的已知问题吗? 什么是工作?

   Exploring IE  /** Exploring IE**/ .selected_option div {height:18px;}    $().ready(function(){ $('.selected_option').blur(function(){ alert('blurred'); }); });    
anywhere in the page

IE专有的focusout事件对我focusout

 $('.selected_option').bind('focusout', function(){ alert('focusout'); }); 

同样,这是专有的(参见quirksmode ),但如果它可以解决您的问题,则可能是合适的。 您始终可以绑定blurfocusout事件。

 onkeypress="this.blur(); return false;" 

它适用于所有IE版本

首先要意识到focusblur事件仅在可聚焦元素上得到支持。 要使

可聚焦性,您需要查看tabindex属性 。

尝试使用锚标记而不是div,因为这些是天真的焦点。 您可以将锚点的href设置为“javascript:void(0)”以防止它实际链接到页面并使用css属性“display:block”使其像div一样呈现。 像这样的东西:

   Exploring IE      anywhere in the page   

没有测试过这个,但我认为它应该可行。

我已经将div的tabIndex属性设置为可聚焦,而且如果我注释模糊事件的高度,那么我认为这不是问题。

尝试:

 $('.selected_option').bind('blur', function(){ alert('blurred'); }); 

此外,你可以制作另一个技巧 – 处理所有鼠标点击或/和焦点事件,如果选择了另一个控件,那么你自己的模糊(当然,如果以前选择)。