点击时调用自定义函数(javascript / jquery)

时间:2018-08-24 02:00:04

标签: javascript jquery click

我是一个初学者,在调用在JavaScript或jQuery上创建的函数时遇到问题。

如果我使用它,它将起作用:

$("#objectId").click(function(){
    alert("Clicked on objectId")
}

但是如果我预定义一个函数并在onclick上调用它不起作用

function alertOnClick(objectToClick) {
    alert("Clicked on " + objectToClick)
}
$("#objectId").click(alertOnClick("objectId"))

在这种情况下,它会在页面加载时发出警报,并且在单击时不会发出警报。

我在语法上做错了什么,为什么?

非常感谢您

2 个答案:

答案 0 :(得分:1)

因为您正在调用函数alertOnClick而不是将其作为引用传递

您应该这样做:

$("#objectId").click(alertOnClick)

function alertOnClick(ev) {
    alert("Clicked on " + ev.target.id);
}

当您执行$("#objectId").click(alertOnClick("objectId"))时,您将在点击事件发生之前使用alertOnClick作为参数调用objectId方法。您应该做的是传递方法的引用,以便在click事件发生时调用该方法。

答案 1 :(得分:1)

要实现此目的,您需要从alertOnClick返回一个函数,如下所示:

function alertOnClick(objectToClick) {
  return function() {
    alert("Clicked on " + objectToClick)
  }
}

这将允许您执行以下操作:

$("#objectId").click(alertOnClick("objectId"))

下面是一个有效的代码示例,可用于实际操作:

function alertOnClick(objectToClick) {
  return function() {
    alert("Clicked on " + objectToClick)
  }
}

$("#objectId").click(alertOnClick("objectId"))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js">
</script>
<button id="objectId">Object Id</button>