Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递给.click()方法参数的参数是否始终为事件对象?_Javascript_Jquery_Events_Javascript Events_Event Handling - Fatal编程技术网

Javascript 传递给.click()方法参数的参数是否始终为事件对象?

Javascript 传递给.click()方法参数的参数是否始终为事件对象?,javascript,jquery,events,javascript-events,event-handling,Javascript,Jquery,Events,Javascript Events,Event Handling,我只是想了解.click()方法中的参数是如何工作的。根据我的理解,.click()方法将函数作为参数 根据jQuery API,.click()可以接受两个参数: ([eventData], event handler) 然后事件处理程序函数可以接受以下参数: (Event eventObject) 这是否意味着.click()方法的函数参数总是希望将“事件对象”传递给它 例如,对于下面的示例,我创建了一个随机对象,然后将其作为参数传递。.click()方法的函数参数似乎忽略了它是一个随

我只是想了解.click()方法中的参数是如何工作的。根据我的理解,.click()方法将函数作为参数

根据jQuery API,.click()可以接受两个参数:

([eventData], event handler)
然后事件处理程序函数可以接受以下参数:

(Event eventObject) 
这是否意味着.click()方法的函数参数总是希望将“事件对象”传递给它

例如,对于下面的示例,我创建了一个随机对象,然后将其作为参数传递。.click()方法的函数参数似乎忽略了它是一个随机对象,并继续将其用作“事件对象”

问题是,引擎盖下到底发生了什么?为什么会这样

编辑:


我对
[eventData]
参数以及事件处理程序如何使用它并不感到困惑。更多关于函数参数排序如何将传递给它的任何参数转换为保存事件对象的变量。

将匿名函数作为参数传递给
。click()
函数

var anObject = {
  "property1" : "someproperty"
};

$(document).click(function(anObject) {
  var x = anObject.pageX;
  var y = anObject.pageY;

  logClicks(x, y);
});

var logClicks = function(x, y) {
  console.log("x: " + x + " y: " + y)
}
因此,该函数具有不同的作用域,
anObject
不是全局声明的对象,而是jQuery API(一个事件)实际传递的对象

var anObject = {
  "property1" : "someproperty"
};

$(document).click(function aNewFunctionWithHisOwnScope(anObject) {
  // here anObject references an Event
  x = anObject.pageX;
  y = anObject.pageY;

  logClicks(x, y);
});

// here anObject references again your defined anObject
所以最后,是的:这将永远是一件大事

编辑,因为我可能不清楚:

您的
anObject
var可以从匿名函数内部获得,因为它类似于一个全局变量。但由于它们具有相同的名称,因此在函数内部使用最后一个引用,因此(函数内部)使用的值是作为参数传递的值,而在函数外部,“全局”对象保留其值

这是否意味着.click()方法的函数参数总是希望将“事件对象”传递给它

是的,传递给事件处理程序函数的参数将始终是jQuery事件对象

var anObject = {
  "property1" : "someproperty"
};

$(document).click(function(anObject) {
  var x = anObject.pageX;
  var y = anObject.pageY;

  logClicks(x, y);
});

var logClicks = function(x, y) {
  console.log("x: " + x + " y: " + y)
}
您的困惑似乎围绕着
([eventData],事件处理程序)
方法的
click()
签名。本例中的第一个参数用于向提供给事件处理程序的
事件
对象的
数据
参数添加值。对于您问题中的代码,您可以使用:

var对象={
“财产1”:“某些财产”
};
$(文档)。单击(对象,函数(e){
var x=e.pageX;
var y=e.pageY;
var数据=e.data.property1;
日志点击(数据,x,y);
});
变量logClicks=函数(数据,x,y){
console.log(数据,x,y)
}

单击([eventData],事件处理程序)中的第一个参数需要是
eventData
,该参数将进一步传递给事件处理程序,稍后您可以使用以下方法访问该数据:


你是说匿名函数没有访问anObject对象的权限?它有访问权限。但是,由于它们的名称相同,因此将使用您使用的名称在本地覆盖它passed@catandmouse我将添加:使用您传递的一个,它实际上是由jQuery传递的,是一个
事件
;)