我需要帮助。 我得到在IE9以下错误。 该代码是工作在Firefox中:
SCRIPT438: Object doesn't support property or method 'on'
这提高了对下面的代码:
$(function() {
$(document).on('change', '#dropdownval select', function(event) {
//logic function
});
});
我需要帮助。 我得到在IE9以下错误。 该代码是工作在Firefox中:
SCRIPT438: Object doesn't support property or method 'on'
这提高了对下面的代码:
$(function() {
$(document).on('change', '#dropdownval select', function(event) {
//logic function
});
});
我会确保这两个浏览器加载相同的源。 说实话,这是一个有点不可能对Firefox使用.on
同时使用jQuery 1.6,因为该方法不存在。
在您的控制台(在IE和Firefox中的Firebug F12开发者工具)键入以下内容:
jQuery.fn.jquery
这应该resturn jQuery的当前版本加载特定的页面上。 例如,截至今日,在这里运行命令在计算器上导致"1.7.1"
。 其次,以测试的存在.on
方法,您可以访问它没有它的括号,采用双否定它转换为一个真正的布尔值:
!!jQuery.fn.on // True if .on is present, False otherwise
由于您使用jQuery 1.6,你没有访问.on
方法,这是在jQuery的1.7推出。 适当的回退将使用.delegate
方法来代替,或者你可以升级到jQuery的(最新版本的Microsoft CDN , 谷歌CDN , jQuery的CDN )。
对于语法.delegate
遵循的.on
相当密切:
$("#dropdownval").delegate("select", "change", function(event){
alert( $(this).val() );
});
小提琴: http://jsfiddle.net/jonathansampson/rMBn4/
你接近你的.on
码,但你不想绑定事件就下来的document
对象-这将意味着该事件需要被处理之前传播可能很长的距离。 相反,当我们用做.delegate
例子中,我们将绑定到更接近于选择元素:
$("#dropdownval").on("change", "select", function(event){
alert( $(this).val() );
});
小提琴: http://jsfiddle.net/jonathansampson/rMBn4/1/
你会注意到,两者之间的主要区别是前两个参数的链接方法的顺序。 随着.delegate
,选择先于事件。 有了.on
,顺序是相反的。
其中的两件事情是发生:
$
不是jQuery
,而是一个功能别处定义; 要么,
$
不是jQuery的正确版本。 on
在1.7推出。
jQuery的1.6以下on
:
$(document).on('change', '#dropdownval select', ...)
可使用被写入delegate
(自1.4,弃用1.7):
$(document).delegate('#dropdownval select', 'change', ...)
可以使用写live
(从1.3起,不建议使用):
$('#dropdownval select').live('change', ...)
请参阅文档更多的选择和注意事项。
使用delegate
可以附加“下面的”身体(如on
),其中为live
一贯重视在体内的水平。 因此,上述可能被更有效地写入,取决于其中目标被定位。
编码愉快。