我有一个<input>
元素可以通过代码设置焦点,也可以通过鼠标单击设置焦点。
如果用户单击输入,则click
事件处理程序将触发 - 一切都很好。如果元素通过其他方式(例如通过代码)接收焦点,那么我想手动触发click
事件,以便处理程序也将触发。
我可以这样做:
$elem = $('input');
$elem
.on('focus', function() { $(this).trigger('click') })
.on('click', function() { alert('Clicked!') });
但是,这将导致click
处理程序被触发两次;一次用于click
事件,一次用于focus
事件。
click
只有当点击事件的结果没有收到焦点时,有没有办法选择性地触发处理程序?
更新
这是我的问题的一个非常简化的版本,所以我不能做一些事情,比如将两个处理程序绑定到focus
事件等。我正在尝试合并两个第三方代码。