jquery - IE 9 jQuery 错误 : "Object doesn' t support . .. 'on' “?

标签 jquery internet-explorer internet-explorer-9

我需要帮助。我在 IE9 中遇到以下错误。该代码在 FireFox 中运行:

SCRIPT438: Object doesn't support property or method 'on' 

这是在以下代码中引发的:

$(function() {
    $(document).on('change', '#dropdownval select', function(event) {
        //logic function
    });
});

最佳答案

适用于 Firefox,不适用于 IE?

我会确保两个浏览器加载相同的源。老实说,Firefox 在使用 jQuery 1.6 时使用 .on 有点不可能,因为该方法不存在。

在控制台(IE 中的 F12 开发人员工具和 Firefox 中的 Firebug)中键入以下内容:

jQuery.fn.jquery

这应该返回该特定页面上加载的 jQuery 的当前版本。例如,截至今天,在 StackOverflow 上运行该命令会产生 “1.7.1”。其次,要测试 .on 方法是否存在,您可以在不使用括号的情况下访问它,使用双重否定将其转换为 true bool 值:

!!jQuery.fn.on // True if .on is present, False otherwise

使用 jQuery 1.6,使用 .delegate 而不是 .on

由于您使用的是 jQuery 1.6,因此您无权访问 .on方法,该方法是在 jQuery 1.7 中引入的。适当的后备措施是使用 .delegate方法,或者您可以升级到最新版本的 jQuery( Microsoft CDNGoogle CDNjQuery CDN )。

.delegate 的语法遵循.on非常接近:

$("#dropdownval").delegate("select", "change", function(event){
    alert( $(this).val() );
});

fiddle :http://jsfiddle.net/jonathansampson/rMBn4/

如果您决定升级...

您与 .on 关系密切代码,但您不希望将事件绑定(bind)到 document 对象——这意味着事件在被处理之前需要传播可能很长的距离。相反,正如我们对 .delegate 所做的那样例如,我们将绑定(bind)到更接近选择元素的东西:

$("#dropdownval").on("change", "select", function(event){
    alert( $(this).val() );
});

fiddle :http://jsfiddle.net/jonathansampson/rMBn4/1/

您会注意到,两者之间的主要区别在于链式方法的前两个参数的顺序。与.delegate ,选择器位于事件之前。与.on ,顺序相反。

关于jquery - IE 9 jQuery 错误 : "Object doesn' t support . .. 'on' “?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10892509/

相关文章:

javascript - 当同一个父类有多个 div 时,从子类中选择一个父类

jquery - 使用 Jquery 更改标签的字体大小

javascript - 如何设置 IE 浏览器选项卡的焦点?

asp.net-mvc - 在 IE 中拖放上传

html - IE 9背景图片位置属性

javascript - 使用javascript模拟点击HTML选择选项

javascript - 如果被拒绝,再次请求地理定位许可

javascript - 分配 onreadystatechange 时类型不匹配错误是什么意思?

javascript - 是否有类似 "Firebug for IE"的东西(用于调试 JavaScript)?

javascript - IE9/Win7菜单无法动态添加跳转列表任务