2012-11-13 32 views
2

jQuery是拋出以下錯誤:遺漏的類型錯誤:對象#<Object>有沒有方法「申請」

Uncaught TypeError: Object # has no method 'apply'

f.event.dispatch

h.handle.i

我發現這些相關的帖子,但沒能解決使用它們的問題: Thisthisthis

這裏的麻煩代碼:

$(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

什麼行會導致錯誤? – Felix

+0

它不說。它指向jquery min js中的一行,但這沒有用處。 – Cos

+0

我仍然在掌握jQuery,所以也許你有可以接受的簡寫,但不應該是:'$('form.rating')。click(function(){// some code});' – FireCrakcer37

回答

5

jquery click handler期望匿名功能,像這樣:

$(document).ready(function(){ 
    $('form.rating').click(function() { 
     // go for it! 
    }); 
}); 
+0

有一種方法你可以做.click({data:val},function(){})...它獨立工作,但不知何故,我遇到了一個問題。 :-( – NullVoxPopuli

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); 
}); 

所有記錄他們的字母位。你傳遞一個空對象來點擊,而是給它一個函數。

相關問題