jquery触发焦点或点击操作,但不是两者

DA.*_*DA. 10 jquery focus click

我有这个示例代码:

$myTrigger
    .click(function(e){
         alert('click');
    })
    .focus(function(e){
         alert('focus');
         $(this).click()
    })
Run Code Online (Sandbox Code Playgroud)

目的是当我点击$ myTrigger时我想要发生一些事情.另一方面,如果你通过键盘选中它(即焦点),我想要完全相同的事情发生,所以我要求它点击.

问题是,如果我点击它,它也会集中注意力.所以这两个警报都会消失.

有没有办法防止焦点事件在点击时熄灭?

更新:

Ajm的评论让我觉得我可能会问错了.

问题:点击事件是否总是在javascript(和/或jQuery中)中引发焦点?我是否可以假设每当我想要用鼠标单击并用键盘进行Tabed-in时,focus()事件都会同时处理?

或者它是否依赖于我附加事件的特定元素?(在这种情况下,$ myObject恰好是一个锚标记(链接).

Nic*_*ver 13

jQuery有一个内置的功能,没有使用所有经常调用的功能 .one()

$mytrigger.one('click focus', function() { alert("event"); });
Run Code Online (Sandbox Code Playgroud)

这只会触发一次,或者如果你想要,你可以重新绑定.


Wal*_*lid 6

要触发TAB焦点的click()(并且当焦点来自鼠标单击时阻止click()被触发两次),我执行了以下操作:

$('#item').mousedown(function(){
    $(this).data("mouseDown", true);
});

$('#item').mouseup(function(){
    $(this).removeData("mouseDown");
});

$('#item').focus(function(){
    if (!$(this).data("mouseDown"))
        $(this).click();
});
Run Code Online (Sandbox Code Playgroud)

这对你有用吗?