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

6 javascript jquery internet-explorer onblur

我有一个下拉菜单,单击一个div,显示列表.

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

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

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

<html>
  <head>
    <title>Exploring IE</title>
    <style type="text/css">
      /** Exploring IE**/
      .selected_option div {height:18px;}
    </style> 
    <script type="text/javascript" src="jquery-1.3.2.min9919.js"></script>
    <script type="text/javascript">
      $().ready(function(){
        $('.selected_option').blur(function(){
          alert('blurred');
        });
      });
    </script>
  </head>
  <body>
    <div class="selected_option" tabindex="0">
      <div>anywhere in the page</div>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 7

IE专有focusout活动对我有用:

$('.selected_option').bind('focusout', function(){
    alert('focusout');
});
Run Code Online (Sandbox Code Playgroud)

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


Pav*_*sky 0

尝试:

$('.selected_option').bind('blur', function(){           
          alert('blurred');
});
Run Code Online (Sandbox Code Playgroud)

您还可以使用另一个技巧 - 处理所有鼠标单击或/和焦点事件,如果选择了另一个控件,那么您自己的控件将变得模糊(当然,如果之前选择了它)。