0

因为我正在创建一个 HTA 代码,所以我被 IE 困住了 :(

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

所以我创造了一种模仿它的方法。当<input type="text">它被点击时,显示<select>下面的内容。那部分工作正常。问题是,select当用户在select.

我试图抓住一个clickbody它第一次工作正常,但第二次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 困住了。

4

2 回答 2

1

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

于 2011-11-07T14:07:34.660 回答
1

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

IE 确实对事件做了一些奇怪的事情。例如,“改变”不会冒泡(<select>至少,可能还有其他东西),但 jQuery 会为您修补它。复选框和单选按钮还有一个经典问题,它们在失去焦点之前不会触发“更改”(这使得它基本上没用)。对于那些,我发现“点击”工作正常。

于 2011-11-07T15:17:49.977 回答