Фокус на клик?

Есть ли простой способ запустить jQuery.focus по ссылке после нажатия на нее? Может быть, есть событие jQuery, смешивающее эти?

HTML:

<a href="#" target="_blank">Focus</a>
<a href="#" target="_blank">Click</a>

JavaScript:

$(document).ready(function(){ // Focus Code $('.focus').focus(function(){ alert('focus!'); }); // My noobish try to focus on click, will probably break the universe /* $('.focus').click(function(){ $(this).focus(); }); */ // This should work, but I want this link to really FOCUS /* $('.focus').click(function(){ alert('focus!'); }); */ // Click Code $('.click').click(function(){ alert('click!'); })
})

Я хочу предупредить "фокус!". после нажатия на ссылку "Фокус", не только нажатие TAB.

Был аналогичный вопрос, но он более сложный и старше 2 лет: jQuery передает оба фокуса и нажимает на элемент

Здесь jsfiddle:

http://jsfiddle.net/JVTKc/

1 ответ

Я думаю, что вы пытаетесь добиться того, что фокус срабатывает при нажатии, TAB и фокус-событиях.

Чтобы увидеть console.log() которую я использую ниже, откройте консоль в своем браузере.

HTML:

<a href="#" target="_blank">Focus Test</a>

Javascript/jQuery:

$(document).ready(function(){ $('.focus-test').focus(function(){ //not using alert because it causes a loop because you re-focus after you dismiss the alert. console.log('focus and click'); }); $('.focus-test').click(function(){ this.focus(); });
})

jsFiddle: http://jsfiddle.net/JVTKc/4/

Чтобы добавить комментарий, вы никогда не должны запускать события самостоятельно, а не вызывать функцию для обработки обоих событий, см. Код ниже.

HTML:

<a href="#" target="_blank">Focus Test</a>

Javascript/jQuery:

$(document).ready(function(){ $('.focus-test').focus(function(){ userInteraction(); }); $('.focus-test').click(function(){ userInteraction(); }); function userInteraction(){ //not using alert because it causes a loop because you re-focus after you dismiss the alert. console.log('focus and click and tab'); }
})

http://jsfiddle.net/JVTKc/5/

licensed under cc by-sa 3.0 with attribution.