由于我正在创建一个HTA代码,所以我只能使用IE:
我们需要在<select>元素中捕获变更事件,但你猜怎么着,IE不支持该事件。
所以我创造了一种模仿它的方法。使用一个<input type="text">,当它被点击时,显示<select>就在下面。那部分运作得很好。问题是,当用户单击select外部时,我想隐藏select。
我试着在body上捕获一个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困住了。
发布于 2011-11-07 15:17:49
Internet 7和更高版本(可能还有6,因为IE7主要是带有口红的IE6,但我不能轻松地测试) do支持更改事件。这里是一个非常简单的演示程序。
IE确实对事件做了一些奇怪的事情。例如,“更改”不会冒泡(至少来自<select>,也可能来自其他方面),但是jQuery为您提供了修补程序。还有一个经典的问题是复选框和单选按钮,它们在失去焦点之前不会触发“更改”(这使得它基本上无用)。对于这些,我发现“点击”很好。
发布于 2011-11-07 14:07:34
为了使.die()正确运行,与它一起使用的选择器必须与最初与.live()一起使用的选择器完全匹配。
https://stackoverflow.com/questions/8037511
复制相似问题