jQuery die()不起作用



由于我正在创建HTA代码,所以我只能使用IE:

我们需要在<select>元素中捕获更改事件,但是你猜怎么着,IE不支持该事件。

所以我创造了一种模仿它的方法。与<input type="text">,当它被点击显示<select>就在下面。这部分很好。问题是,当用户单击select外部时,我想隐藏select

我试图在body上捕捉click,它第一次工作得很好,但第二次select被隐藏起来。

下面是代码的简化版本:

$('.product').live('click',function(){
    // Show the <select id="select"> code goes here
    // this is the event to close the select
    $('body').die().live('click', function(){ $('#select').fadeOut(250); return;});
    // get the click on the select element
    $('#select').die().live('click',function(){
       // kill the close the select
       // THIS IS THE .die() THAT DOES NOT WORK
       $('body').die();
});

问题这个代码有什么问题吗?或者有更好的方法来做到这一点?别忘了我只能用IE了

Internet Explorer 7及以上版本(也可能是6,因为IE7主要是带口红的IE6,但我无法轻松测试)是否支持更改事件。这是一个非常简单的jsfiddle演示。

IE确实对事件做了一些奇怪的事情。例如,"更改"不会冒泡(至少从<select>,可能还有其他东西),但jQuery会为您修补它。此外,复选框和单选按钮也存在一个经典问题,它们在失去焦点之前不会触发"更改"(这使得它们基本上毫无用处)。对于这些,我发现"click"很好。

为了使.die()正常工作,它所使用的选择器必须与.live()最初使用的选择器完全匹配。

相关内容

  • 没有找到相关文章

最新更新