2014-02-19 87 views
0

我将点击事件传入我的函数,但似乎没有工作?自定义功能不起作用?

$('body').on("click", youclick(event)); 

function youclick(e){ 
    console.log("testing"); 
    e.stopPropagation(); 

} 
+2

的[为什么在网页加载时立即点击事件处理火?]可能重复(http://stackoverflow.com/questions/7102413/why-does-click-event-handler-fire-immediately -upon页面加载) –

回答

1

由于@Rajaprabhu建议。当您使用回调函数(您可以点击(e))时,回调参数(youclick)作为函数名称本身传递,没有参数或者甚至是大括号或大括号。

It means that a reference of the function is passed in the function call. 

How CallBack Function works?

因为函数是JavaScript的第一类对象,我们可以把 功能,如对象,所以我们可以通过周围的功能,如变量 和函数返回他们在使用它们其他功能。当我们 传递一个回调函数作为另一个函数的参数时,我们是 只传递函数定义。我们没有在参数中执行 函数。我们没有像 执行一个函数那样通过 尾随执行圆括号()的函数。

而且由于包含函数在其参数 中具有回调函数作为函数定义,因此它可以随时执行回调 。这允许我们在包含函数的任何点 处执行回调函数。

请务必注意,立即不执行回调函数 。它在包含函数体内的某个指定的 点处被“回叫”(因此得名)。

$('body').on("click", youclick); 

function youclick(e){ 
    console.log("testing"); 
    e.stopPropagation(); 

} 
3

只是传递function本身的reference。而你并不需要通过event,您可以收到通过global scope

尝试,

$('body').on("click", youclick); 

function youclick(e){ 
    console.log("testing"); 
    e.stopPropagation(); 

}