jquery trigger action on focus or click but not both

click, focus, jquery

Solution

jQuery has a built-in functon for this that's not used all that often called `.one()`

$mytrigger.one('click focus', function() { alert("event"); });

This will only trigger once, or you can re-bind if you want afterwards.

Problem

I have this sample code: ``` $myTrigger .click(function(e){ alert('click'); }) .focus(function(e){ alert('focus'); $(this).click() }) ``` The intent is that I want something to happen when you click on $myTrigger. If, on the other hand, you tab onto it via the keyboard (ie, focus) I want the exact same thing to happen, so I ask it to click. The catch is if I click on it, it also focuses. So both alerts are going off. Is there a way to prevent the focus event from going off when clicking? UPDATE: Ajm's comment got me thinking that I'm maybe asking the wrong thing. Question: Does a click event always also trigger focus in javascript (and/or in jQuery?). Can I assume whenever I want to handle both clicking with the mouse and tabbing-in with the keyboard, the focus() event will handle both? Or is it dependent on the particular element that I'm attaching the events to? (In this case $myObject happens to be an anchor tag (link).

Original source