jQuery die()不起作用

时间:2011-11-07 14:03:53

标签: javascript jquery hta

因为我正在创建一个HTA代码,所以我坚持使用IE :(

我们需要将更改事件捕获到<select>元素中,但猜猜是什么,IE不支持该事件。

所以我创造了一种模仿它的方法。使用<input type="text">点击时会显示<select>。那部分工作正常。问题是,我想在用户点击select之外时隐藏select

我试图抓住click上的body,第一次正常,但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困住了。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

Internet Explorer 7及以上(可能是6,因为IE7主要是带有口红的IE6,但我无法轻松测试)执行支持更改事件。 Here是一个非常简单的演示文章。

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