2011-12-19 106 views
1
var $forms = $('form.vote'); 
$forms.submit(function(){ 
    return false; 
}); 
$('.votebtn').on('click',function(){ 
    $this.closest('form').trigger('vote_now', [$(this).val()]); 
}); 

$forms.on('vote_now',function(value){ 
    alert(value); 
}); 

vote_now應該被觸發並彈出該值,但是出現了錯誤。它是什麼?.trigger()a .on()

http://jsfiddle.net/6ZHy4/

+1

你能重新在http://jsfiddle.net這個問題? – JesseBuesking 2011-12-19 05:18:25

+0

http://jsfiddle.net/6ZHy4/ – Michelle 2011-12-19 05:22:09

回答

1

你忘了var $this = $(this);,以及額外的參數將事件對象後傳遞

JSFIDDLE DEMO

var $forms = $('form.vote'); 
$forms.submit(function(){ 
    return false; 
}); 
$('.votebtn').on('click',function(){ 
    var $this = $(this); // declare variable 
    $this.closest('form').trigger('vote_now', [$(this).val()]); 
}); 
            // second argument, not first. 
$forms.on('vote_now',function(e, value){ 
    alert(value); 
}); 
+1

Ah我的錯,謝謝您! – Michelle 2011-12-19 05:27:44

+0

你可以檢查這裏有什麼問題嗎?我正在給按鈕添加一個類。 http://jsfiddle.net/XbSp6/1/ – Michelle 2011-12-19 05:44:44

+0

@ user1099531:你的意思是因爲'禁用'類沒有添加?這是因爲你試圖將回調函數傳遞給'addClass',它不需要回調。 (也許它確實如果你有jQueryUI加載。)[這是一個更新](http://jsfiddle.net/XbSp6/2/) – RightSaidFred 2011-12-19 05:50:01

1

$this不當聲明。使用$(this)上,而不是6號線

http://jsfiddle.net/PxkpC/

+0

它提出了一個觀點,如果他將自己的參數包裝在一個數組中,他可能想要訪問一個元素(即:alert(value [0])) – Sinetheta 2011-12-19 05:25:25