trigger
您可以在使用该函数以编程方式触发事件时传递参数:
$('input').click (e, target = e.target) ->
console.log 'target:', target
false
$('a').click (e) ->
$('input').trigger 'click', this
在那里我传递了一个target
默认为的可选参数e.target
,当单击链接时,链接本身作为该参数传递。然后您可以使用该参数来检查哪个是触发元素。您可以检查此 jsfiddle中的不同输出。
但是,鉴于这个简单的例子,我必须说这个解决方案可能有点令人困惑,我宁愿只使用相同的函数作为两个元素的点击处理程序(jsfiddle):
$('input, a').click (e) ->
console.log 'target:', e.target
false
或者,如果您需要为每个元素做一些不同的事情,然后为两者做一些共同的事情,您可以只使用另一个函数来实现该常见行为:
$('input').click (e) ->
# Do something special for the input.
commonClickHandler this, e
$('a').click (e) ->
# Do something special for the link.
commonClickHandler this, e
somethingCommon = (element, event) ->
# Do something common for both elements.