【发布时间】:2012-07-19 09:25:36
【问题描述】:
我在选择时遇到了这个典型问题。首先让我明确表示我正在运行jQuery 1.3.2,我知道它已经很老了,但由于某些原因我无法更新它。我的问题是jQuery 1.3.2 和IE7。现在的问题是我有下面的选择框...
<select class="myclass">
<option value="select">Select</option>
<option value="sunday">Sunday</option>
<option value="monday">Monday</option>
<option value="tuesday">Tuesday</option>
<option value="wednesday">Wednesday</option>
</select>
问题是,在我的脚本中,这个选择被替换为从 ajax 调用中检索到的相同选择。但是自从它被替换后,change 事件就不再适用了。我可以使用live(),但从jQuery 1.3.2 开始,这在IE7 中不起作用。我也不能使用deligate(),那么有什么方法可以在选择被替换后实现连续的更改事件?
如果没有,我可以在 ajax 调用后将.change() 函数绑定到同一个元素吗?
这是我的脚本...
$('.myclass').change(function(){
//other code
$.post(document.URL,data,function(){
//other code
//[[here on success I want to bind the same code again on my class so it will be called the next time]]
});
});
在这里重新绑定函数是一个选项吗?除了添加livequery,我正在寻找解决方案。
Link to Fiddle 如果你在 IE9 中运行它,它会工作,但在 IE7 和 IE8 中则不行
【问题讨论】:
-
不替换 select 元素,为什么不直接删除 option 元素并放入新元素?
-
@code90 想到了这一点,但它是一个复杂的部分,包含许多包含并由 php 计算,所以这样做会有问题。
标签: jquery select binding bind onchange