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

Есть ли простой способ запустить 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.