因为我正在创建一个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困住了。
答案 0 :(得分:1)
为了让.die()正常运行,与它一起使用的选择器必须与最初与.live()一起使用的选择器完全匹配。
答案 1 :(得分:1)
Internet Explorer 7及以上(可能是6,因为IE7主要是带有口红的IE6,但我无法轻松测试)执行支持更改事件。 Here是一个非常简单的演示文章。
对于事件而言,IE确实很奇怪。例如,“更改”不会起泡(至少来自<select>
,可能还有其他东西),但是jQuery会为你补丁。还有复选框和单选按钮的经典问题,它们在失去焦点之前不会触发“更改”(这使得它基本上没用)。对于那些人,我发现“点击”工作正常。