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

标签 jquery

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

是否有我可以使用的 jQuery 中 .live 的替代方案、插件或解决此问题的解决方法?

我当前的代码如下:

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

- jack

编辑:

我的总目标是有 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>

最佳答案

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

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

根据,您更多要求披露您实际想要做什么,您可以像这样修复它 http://jsfiddle.net/jfriend00/Ry9Ns/使用动态形式的 .on() 而不是已弃用的 .live()

$("#container").on('dblclick', 'select[name="CourseLevelSelector"]', function(e) {
    var ids = $('select[name="CourseLevelIDs"]');
    $(this).find(":selected").each(function() {
        // make sure selected item is not already in the other list
        if (!ids.find('[value="' + this.value + '"]').length) {
            $(this).clone().appendTo(ids);
        }
    });

})


$("#container").on('dblclick', 'select[name="CourseLevelIDs"]', function(e) {
    $(this).find(":selected").remove();
})​

关于jQuery .live() 在 IE9 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109946/

相关文章:

javascript - 增加 IE 中的 jquery 滚动频率

jquery-ui - 带有 Backbone 和 Marionette 的 Jquery UI 对话框

javascript - jQuery UI 日期选择器在显示年份菜单时无法显示完整的年份

javascript - Colorbox JQuery 单击时未打开

jquery - 可拖动元素智能引用线无法正常工作

javascript - 如何使用 C# 在 GeckoFX 中点击鼠标触发触摸事件

javascript - 如何滚动 <object> 元素?

javascript - 如何返回文本输入中字符串末尾的绝对像素坐标?

jQuery 自动完成 ajax 类型错误

javascript - 找到 div 后如何在 javascript/jquery 中设置 img 标签的样式?