我正在尝试通过单击 DOM 元素来执行外部函数,而不将其包装在另一个函数中。
假设我有一个名为 sayHello()
的函数,如下所示:
function sayHello(){
alert("hello");
};
要在点击时执行它,我目前必须这样做:
$("#myelement").click(function(){
sayHello();
});
请注意,我被迫将单个函数调用包装在另一个函数中。 我想做的是这样的
$("#myelement").click(sayHello());
除非那根本行不通。 我可以避免以任何方式将单个函数调用包装在另一个函数中吗? 谢谢!
.
附加信息: 当我需要将参数传递给函数时,我将如何实现同样的事情?
..
附加信息: 正如 Chris Brandsma 和 Jani Hartikainen 指出的那样,应该能够使用 bind 函数将参数传递给该函数,而无需将其包装在另一个匿名函数中:
$("#myelement").bind("click", "john", sayHello);
sayHello()
现在接受一个新参数,例如:
function sayHello(name){
alert("Hello, "+name);
}
不幸的是,这似乎不起作用......有什么想法吗? 事件/绑定(bind)文档位于 here 谢谢!
最佳答案
从您在那里遇到的问题中挑选。
显然,您需要这样调用它才能工作:
$("#myelement").click(sayHello);
按照实际执行方法的方式调用它,而不是将方法发送到点击处理程序。
如果需要传递数据也可以这样调用方法:
$("#myelement").click(function(){ sayHello("tom");});
或者您可以通过 bind()
传递数据功能
function sayHello(event){ alert("Hello, "+event.data); }
$("#myelement").bind("click", "tom", sayHello);
或者您可以从被点击的元素中检索数据
$("#myelement").click(function(){sayHello($(this).attr("hasData");});.
希望对您有所帮助。
关于javascript - 单击元素时如何执行外部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1183330/