尝试传入回调函数失败

我试图在用户点击网页上的元素时创建一些function。 一旦页面执行,回调函数就会执行。 它只应在用户点击元素时执行。 这是代码:

   Javascript Test   $("#clickMe").one('click', printThis("Hello All")); function printThis(msg) { console.log(msg); }    
Click me!

谢谢!

不要调用回调。 传递一个匿名回调函数,调用你想要的函数。

 function printThis(msg) { console.log(msg); } $("#clickMe").one('click', function() { printThis("Hello All") }); 

这实际上并没有传递函数,而是在评估函数并将结果作为回调参数传递(在本例中为undefined )。

试试这个

  

一个方法将回调作为第二个参数。 printThis(“Hello All”)实际上会在那里调用方法,所以点击clickMe没有任何事情会发生,因为没有附加处理程序。 试试这个

 function printThis(msg) { console.log(msg); } $("#clickMe").one('click', function() { printThis("Hello All") }); 

已发布的答案是对的:

 $("#clickMe").one('click', function() { printThis("Hello All") }); 

这称为闭包: https : //developer.mozilla.org/en/JavaScript/Guide/Closures闭包是一个函数,通常被声明为内联/匿名代码块,它会延迟函数和存储的执行要传入的“Hello All”参数的值。

jQuery会将这个“function(){…}”代码块存储为事件处理程序,然后在单击#clickMe元素时,将执行该代码块,然后调用printThis函数。

你会发现自己经常使用jQuery这种模式。

试试这个… http://jsfiddle.net/PcVJq/