确定焦点是否是由于点击事件而接收的

7 浏览
0 Comments

确定焦点是否是由于点击事件而接收的

我有一个元素,可以通过代码设置焦点,也可以通过鼠标点击设置焦点。

如果用户点击输入框,那么click事件处理程序将会触发。如果元素通过其他方式(例如通过代码)接收到焦点,那么我希望手动触发click事件,以便触发处理程序。

我可以这样做:

$elem = $('input');
$elem
    .on('focus', function() { $(this).trigger('click') })
    .on('click', function() { alert('Clicked!') });

然而,这将导致click处理程序被触发两次;一次是click事件,一次是focus事件。

有没有办法只在焦点不是由点击事件引起时选择性地触发click处理程序?


更新

这只是我的问题的一个非常简化的版本,所以我不能像绑定两个处理程序到focus事件等。我正在尝试合并两个第三方代码。

0