尝试传入回调函数失败
我试图在用户点击网页上的元素时创建一些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这种模式。