jquery .live событие 'focus' не вызывается в Google Chrome
Интересно, это ошибка в Chrome или JQuery, или я неправильно понимаю использование функции.live
$('.input_form input[type="radio"]').live({
'change':function(){
console.log("this is a radio button");
}
});
Приведенный выше код отправляет вывод в окно консоли, когда я нажимаю переключатель с классом input_form во всех основных браузерах
однако следующий код:
$('.input_form input[type="radio"]').live({
'focus':function(){
console.log("this is a radio button");
}
});
отправляет вывод в окно консоли во всех браузерах, кроме Google Chrome (10)
единственное отличие - это изменение с "изменения" на "фокус" в качестве моего триггера событий.
Кто-нибудь может пролить свет?
3 ответа
Проверьте этот вопрос [1], в нем говорится, что события фокусировки не запускаются на переключателях в chrome и safari.
Если вы используете jQuery 1.7+, вам, вероятно, следует сделать:
$(document).on({
change: function(){
console.log("this is a radio button on change");
},
focus: function() {
console.log("this is a radio button on focus");
}
}, '.input_form input[type="radio"]');
Если вы все еще используете live, и вам не нужна карта, выполните:
$('.input_form input[type="radio"]').live('focus', function(){
console.log("this is a radio button");
});
или с картой:
$('.input_form input[type="radio"]').live({
focus: function(){
console.log("this is a radio button");
}
});
В webkit фокус не переключается на переключатели при нажатии автоматически, только при использовании вкладки. Тем не менее, вы можете установить фокус на элементе, хотя все, почему вы делаете это таким образом, мне не под силу, но это возможно:
$(document).on({
click: function(){
console.log("this is a radio button on click");
$(this).focus();
},
focus: function() {
console.log("this is a radio button on focus");
}
}, '.input_form input[type="radio"]');
Im not sure but think you will have to use focusin
вместо focus
,
$('.input_form input[type="radio"]').live({
'focusin': function(){
console.log("this is a radio button");
}
});
At least some time ago focusin
was a normalized event for dealing with live
а также focus
,
А также blur
называется focus out
Замечания:
The focusin event is sent to an element when it, or any element inside of it, gains focus. Это отличается от события фокуса тем, что оно поддерживает обнаружение события фокуса на родительских элементах (другими словами, оно поддерживает всплытие событий).