jQuery抛出以下错误:
未捕获的TypeError:对象#没有方法'apply'
f.event.dispatch
h.handle.i
我发现了这些相关帖子,但无法解决使用它们的问题: This,this和this。
这是麻烦的代码:
$(document).ready(function(){
$('form.rating').click({
cancelShow:true,
callback: function(ui, type, new_value) {
var values = ui.$form.serializeArray();
values.push({
'name': 'rating',
'value': new_value
});
values = jQuery.param(values);
var msg = ui.$form.attr('update-msg');
$(msg).removeClass('hidden');
$(msg).show();
$(msg).find('div.msg-default').show();
$(msg).find('div.msg-result').hide();
$.ajax({
'type': 'POST',
'dataType': 'json',
'url': ui.$form.attr('action'),
'data': values
}).done(function(data) {
var overall_rating = ui.$form.attr('update-overall');
if(overall_rating && data['overall_rating']){
$(overall_rating).html(data['overall_rating']);
}
if(msg){
$(msg).find('div.msg-default').hide();
if(data['msg']) {
$(msg).find('div.msg-result').show();
$(msg).find('div.msg-result').html(data['msg']);
window.setTimeout(function() {
$(msg).addClass('hidden');
}, 2000);
} else {
$(msg).addClass('hidden');
}
}
if(data['user_rating'] && data['user_rating']>0) {
ui.select(parseInt(data['user_rating']));
}
});
}
});
});
有什么想法吗?
编辑:好的,所以我将其剥离为:
$(document).ready(function(){
$('form.rating').click({
});
});
它仍然显示相同的错误。这可能与我的jQuery脚本有关吗?它显示的唯一其他信息是这一行,但我不认为它有多大帮助,因为该文件总共有3行:jquery-1.7.2.min.js:3
答案 0 :(得分:5)
jquery click处理程序需要一个匿名函数,如下所示:
$(document).ready(function(){
$('form.rating').click(function() {
// go for it!
});
});
答案 1 :(得分:2)
@Ludder很接近,但只是一点点关闭。他是对的,你需要将一个函数作为参数传递给click
,但它不一定是匿名的。
a = {myFun: function(){console.log("a");}}
$(document).ready(function(){
$('body').click(a.myFun);
});
和
b = function(){console.log("b");}
$(document).ready(function(){
$('body').click(b);
});
和
function c () {console.log("c");}
$(document).ready(function(){
$('body').click(c);
});
全部记录他们的字母表。你正在传递一个空对象来点击,而是给它一个函数。