Этот вопрос аналогичен моему предыдущему вопросу, Нажмите действие на Focused DIV, но на этот раз главная тема: "Как предотвратить событие фокуса при запуске, когда я нажимаю один из div. В прошлый раз у меня был один div с tabindex = '- 1', чтобы сделать его сосредоточенным на клике, теперь у меня есть список divs с tabindex > 0, чтобы они могли получить фокус при табуляции.
<div tabindex='1'>Div one</div>
<div tabindex='1'>Div two</div>
<div tabindex='1'>Div tree</div>
<div tabindex='1'>Div four</div>
несколько стилей:
div {
height: 20px;
width: 60%;
border: solid 1px blue;
text-align: center;
}
div:focus {
border: solid 2px red;
outline: none;
}
Теперь я использую флаг (действие) для запуска действия (предупреждения) при нажатии на div во второй раз и одним щелчком мыши, если он уже сфокусирован, например, с помощью TAB.
var action = false;
$('div')
.click(function(e){
e.stopImmediatePropagation();
if(action){alert('action');}
action = true;})
.focus(function(){action = true;})
.blur(function(){action = false;});
Проблема с приведенным выше кодом - это событие фокуса, которое запускается, что означает, что stopImmediatePropagation не работает так, как я ожидал. Действие двух кликов работает, комментируя строку события фокуса, но вам все равно нужно дважды щелкнуть, когда div получает сосредоточиться на TAB. Вот пример: http://jsfiddle.net/3MTQK/1/