模糊事件不会在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 ),但如果它可以解决您的问题,则可能是合适的。 您始终可以绑定blur
和focusout
事件。
onkeypress="this.blur(); return false;"
它适用于所有IE版本
首先要意识到focus
和blur
事件仅在可聚焦元素上得到支持。 要使
可聚焦性,您需要查看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'); });
此外,你可以制作另一个技巧 – 处理所有鼠标点击或/和焦点事件,如果选择了另一个控件,那么你自己的模糊(当然,如果以前选择)。