这是我不久前问的另一个问题的后续问题。通常,您可以从 jQuery 事件的函数调用中访问事件,如下所示:
$item.live("click", functionToCall);
并在函数中:
function functionToCall(ev) {
// do something with ev here, like check 'ev.target'
}
但是如果我想向 functionToCall() 发送一个参数怎么办and访问活动?也许是这样的? :
$item.live("click", functionToCall($(this)); // send over parameter this time
and
function functionToCall(ev, $clickedItem) {
// both accessible here?
alert(ev.type);
alert($clickedItem.attr('id'));
}
这是可以接受的,还是有其他方法来发送参数?因为这种方式在我看来不太合适。任何帮助,将不胜感激。谢谢。
澄清:我意识到匿名回调函数将允许我访问两者,但由于各种原因太长而无法在本文中讨论,我需要使用函数调用而不是匿名函数。所以我的问题严格涉及需要调用外部函数的情况。谢谢。
UPDATE:我最初的问题提出了需要将 $(this) 作为参数传递给外部函数的场景。事实证明,由于 jQuery 根据事件将值重新分配给“this”的方式,$(this) 在函数中甚至不需要传递它就可以访问。因此,执行此代码应该适用于我原来的问题:
$item.live("click", functionToCall);
and
function functionToCall(ev) {
alert(ev.type);
alert($(this).attr('id')); // display id of item that was clicked
}
然而,正如其他人所回答的那样,存在一种不同的情况,涉及需要传递不同类型的变量作为参数,例如简单的字符串或整数。在这种情况下,正如其他人有注释一样,它变得更加复杂。但这里似乎确实有足够的答案来满足第二种情况(即“柯里化”)。谢谢。