我想利用jQuery的自定義事件。在DOM負載上,我使用$.on()
將body
綁定到自定義事件test
。緊接着,我開始了這個事件,一切都按計劃進行。但是,任何其他時間我都會觸發該事件(在回調中,從控制檯等),沒有任何反應。我寫了一個jsfiddle來說明這種情況。有任何想法嗎?在jQuery中的自定義事件
$(function(){
$('body').on('test', function(){
alert('test triggered');
});
$('body').on('click', '.btn', triggerTest);
$('body').trigger('test');
});
var triggerTest = function(){
$('body').trigger('test');
}
點擊錨會拋出一個錯誤:'TypeError:handleObj.handler.apply不是一個函數'。問題是,在你試圖將事件處理程序綁定到錨點時,'triggerTest'尚未初始化。如果我更改小提琴設置,將代碼包含在文檔的「head」中,它可以正常工作:http://jsfiddle.net/vgEzD/2/。爲什麼?因爲現在你在加載DOM時執行整個代碼,也就是說,在給'triggerTest'分配一個值之前,你傳遞給'.ready'的回調*立即執行*。 –