jQuery .live()在IE9中不起作用

时间:2012-04-11 16:23:11

标签: jquery

我在我的网站上使用jQuery 1.7.1并使用.live()函数来处理需要在将来添加的元素上调用的一些事件。由于某种原因,它不起作用(没有错误,没有警报,没有显示任何内容)。我读了一些,有些人说它不起作用,其他人说它工作正常,但我没有看到任何变通方法,修复或任何近期的事情。它在其他浏览器中运行良好,只是在IE9中(可能不是IE的其他浏览器)。

我可以使用jQuery替代.live,插件或一些可以解决这个问题的解决方法吗?

我目前的代码如下:

$('select[name="CourseLevelSelector"] option').live('dblclick', function () {
    //Do Stuff
});

-Jake

编辑:

我的目标一点是我有2个多选框,一个有数据,另一个是空白。当您双击选择框中包含数据的选项时,它会将自身复制到空选择中。如果您再双击已添加的选项,它将完全删除它。 (此代码正常工作,它只是事件处理程序不是)

HTML看起来像这样:

<select name="CourseLevelSelector" multiple="multiple">
    <option value="1">First</option>
    <option value="2">Second</option>
    <option value="3">Third</option>
</select>
<select name="CourseLevelIDs" multiple="multiple">

</select>

3 个答案:

答案 0 :(得分:3)

在IE中,option元素不会获得点击事件,只会获得select元素。您需要将事件绑定到选择对象。

在IE中试用此测试应用以查看问题:http://jsfiddle.net/jfriend00/JGrbh/

Per,您的更多请求披露了您实际尝试做的事情,您可以使用.on()的动态格式代替不推荐使用的{{1}来解决此问题http://jsfiddle.net/jfriend00/Ry9Ns/ }。

.live()

答案 1 :(得分:0)

我根据jfriend00

提供的信息找到了解决此问题的方法

由于IE不支持选项标签的点击处理程序,这就是我所做的:

$('select[name="CourseLevelSelector"]').live('dblclick', function () {
    var doubleClickedOption = $(this).find(':selected');

    //Do Stuff
});

它处理选择框本身的双击,并将所选项目作为jquery对象获取,以便在代码中使用。

-Jake

答案 2 :(得分:-1)

尝试jQuery.on,因为您使用的是1.7版本的jQuery。

如果有一些标记问题,IE对它很敏感。它通常使用Div ID命名约定。