2013-06-19 213 views
9

我在jquery的ready函數中附加了一個自定義的事件處理函數。之後,我立即成功觸發了該自定義事件。jquery - 觸發自定義事件

$(function(){ 
    $("body").on("test", function(){ 
     alert("test triggered"); 
    } 
    $("body").trigger("test"); 
} 

但是,當我在控制檯中觸發它時,什麼都不會發生。爲什麼?

+0

語法錯誤... – Musa

+0

.on - 將一個或多個事件的事件處理函數附加到所選元素。這裏有什麼活動? – zod

+2

@dementic請不要更改編輯 – Musa

回答

5

首先你有語法錯誤

$(function(){ 
    $("body").on("test", function(){ 
     alert("test triggered"); 
    }); < ---- Missing this 
    $("body").trigger("test"); 
}); 

其次,你可以不觸發從控制檯的事件,作爲$(function() {});形成一個閉合和你將無法訪問其中的任何方法

爲了讓它像您所期望的那樣工作,請在您的腳本文件中添加一個調試點,然後嘗試觸發事件。當事件在範圍內時,它現在起作用。

+3

當然可以。在控制檯中執行'$(「body」)。trigger(「test」);''會工作。爲什麼它不工作? '$'是一個全局變量。 –

+0

我對語法錯誤表示歉意。不知道一個事件監聽者不會聽到關閉之外發生的事件。謝謝! – JJK

4

它看起來像你的代碼格式不正確。檢查您的調試控制檯以確認。

你可以試試這個:

$(function(){ 
    $("body").on("test", function(){ 
     alert("test triggered"); 
    }); 
    $("body").trigger("test"); 
}