2013-06-19 161 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"); 
}