我是一个初学者,在调用在JavaScript或jQuery上创建的函数时遇到问题。
如果我使用它,它将起作用:
$("#objectId").click(function(){
alert("Clicked on objectId")
}
但是如果我预定义一个函数并在onclick上调用它不起作用
function alertOnClick(objectToClick) {
alert("Clicked on " + objectToClick)
}
$("#objectId").click(alertOnClick("objectId"))
在这种情况下,它会在页面加载时发出警报,并且在单击时不会发出警报。
我在语法上做错了什么,为什么?
非常感谢您
答案 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>