我如何克服IE8对live('change')的限制而不是在AJAX元素上触发?

时间:2012-02-10 18:34:56

标签: jquery

我使用的是jQuery 1.3.2,由于规格限制,我无法更新该版本。

我正在尝试触发一个事件,用户使用“跳转菜单”直接转到目标页面。这个跳转菜单是基于AJAX的。获得国家AJAX结果的第一国家,然后是城市。当用户点击某个城市时,他们将被定向到相关的网址。

此代码在Mozilla,Chrome和IE9中运行良好:

$("#id-of-the-AJAXED-select-widget").live('change', function(){ jumpSubmit(); });

但IE8中的“更改”事件并未触发。从我在许多其他地方读到的内容来看,这是IE8和jQuery 1.3的问题组合 - 但是,没有解决方案的想法。就像我想的那样,我无法消除其中任何一个 - 所以请帮助我找到答案......

2 个答案:

答案 0 :(得分:2)

如果您无法使用live,则必须使用bind,所以:

  • 将事件绑定到您的元素,并在替换它的ajax请求中“重新绑定”
  • 或绑定select元素,并进行ajax调用,以便它们只替换option中的select(我猜选择城市是通过select元素)

如果您需要进一步澄清,请与我们联系。

答案 1 :(得分:1)

更清晰的编写代码的方式:$("#id-of-the-AJAXED-select-widget").live('change', jumpSubmit);

至于你的问题,这似乎是IE8特有的。您最好的选择是单挑IE8然后使用click()事件而不是change()事件来触发页面:

// mousedown
oldIndex = this.index

// mouseup
if (this.index != oldIndex) {
  // It changed
}