Javascript 为什么JQuery会弄乱我想要绑定到单击处理程序的参数?

Javascript 为什么JQuery会弄乱我想要绑定到单击处理程序的参数?,javascript,jquery,Javascript,Jquery,简言之,我正在这样做: function myHandler(a,b,c,d){ doStuffWithMyParams(a,b,c,d); } 然后在其他地方: jqueryElem.click(myHandler.bind(a,b,c,d)); 当我这样做时,一些传递的参数(a,b)被正确读取。但是第三个(c)是JQuery事件对象。我还尝试将args绑定为数组。然后,第一个参数成为事件对象 在这里完全困惑。提前感谢您的指导。对于代码myHandler.bind(a,b,c,d)

简言之,我正在这样做:

function myHandler(a,b,c,d){
    doStuffWithMyParams(a,b,c,d);
}
然后在其他地方:

jqueryElem.click(myHandler.bind(a,b,c,d));
当我这样做时,一些传递的参数(a,b)被正确读取。但是第三个(c)是JQuery事件对象。我还尝试将args绑定为数组。然后,第一个参数成为事件对象


在这里完全困惑。提前感谢您的指导。

对于代码
myHandler.bind(a,b,c,d)
,参数
a
是bind()使用的上下文

所以我的处理者实际上看到了这一点

function myHandler(b,c,d,event){
所以我有一种你想要的感觉

jqueryElem.click(myHandler.bind(this, a,b,c,d));

对于代码
myHandler.bind(a,b,c,d)
,参数
a
是bind()使用的上下文

所以我的处理者实际上看到了这一点

function myHandler(b,c,d,event){
所以我有一种你想要的感觉

jqueryElem.click(myHandler.bind(this, a,b,c,d));

基于epascarello所写的内容,这应该可以做到:

jqueryElem.click(myHandler.bind(this,[a,b,c,d]));

没有该数组可能会导致
b
被视为
eventHandler
。请注意,我使用了一个数组,但它也可以是一个对象,例如。

基于epascarello所写的内容,这应该可以做到:

jqueryElem.click(myHandler.bind(this,[a,b,c,d]));

没有该数组可能会导致
b
被视为
eventHandler
。请注意,我使用了一个数组,但它也可以是一个对象,例如。

还有什么请尝试传递对象而不是array@daremachine我可以试试——为什么你会这样建议?你的参数名有可能与jQuery中使用的名称相同吗?jQuery文档说.bind(eventType[,eventData],handler)。。因此,如果事件数据是json对象或数组,它可以正常传递,但在一个参数中,a、b、c和d的类型分别是什么?以及尝试传递对象而不是array@daremachine我可以试试——你为什么这么建议?你的参数名有可能与jQuery中使用的名称相同吗?jQuery文档说是.bind(eventType[,eventData],处理程序)…因此,如果事件数据是json对象或数组,它可以正常传递,但在一个参数中,a、b、c和d的类型分别是什么?这很有意义--“this”毕竟是jquery回调中的事件对象。让我试试。@Arcanecaraeda的回答对我来说很遥远。我相信如果需要,你的解决方案会起作用传递更少的参数。不过,感谢您将其推向正确的方向。这很有意义--“this”毕竟是jquery回调中的一个事件对象。让我试一试。@Arcaneraeda的回答对我来说很遥远。如果我需要传递更少的参数,我相信您的解决方案会奏效。感谢您将其推向正确的方向方向。是的,完全正确。现在我想起来,这很有意义。非常感谢你的帮助。例如,doc说:)但是把“这个”传给eventType做这个把戏。顺便说一句,很好。是的,完全正确。现在我想起来,这很有意义。非常感谢你的帮助。例如,doc说:)但是把“这个”传给eventType做诀窍。顺便说一句,不错。