javascript - 单击元素时如何执行外部函数?

标签 javascript jquery event-handling

我正在尝试通过单击 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/

相关文章:

javascript - 在 React Native 中从 componentDidMount 获取状态失败

javascript - 为什么ajax请求提交 'none'作为dom元素的值?

javascript - jQuery:获取原始选择器

javascript - 页面加载时触发点击嵌入视频

c# - 如何为另一个对象注销另一个对象的事件处理程序?

javascript - 使传单工具提示可点击

javascript - 将 *<BR> 替换为 <li>

JavaScript : promise issue

javascript - 变量访问原型(prototype)

javascript - 使用 jQuery 构建 XML 请求的最快方法