我需要帮助。我在 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 CDN 、 Google CDN 、 jQuery CDN )。
$("#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/