У меня есть селектор, который выбирает несколько элементов. Я хочу проверить, имеет ли хотя бы один из этих элементов фокус.
Экспериментируя, я заметил, что. .is(":focus")
и .has(":focus")
не работают при работе с несколькими элементами, см. Ниже:
console.log( $('.text-block').is(":focus") ); // prints false
console.log( $('.text-block').has(":focus") ); // prints empty object array
console.log( $('.text-block').filter(":focus") ); // prints empty object array
console.log( $('.text-block:focus') ); // prints one element (works!)
поскольку :focus
селектор выбора кажется единственным способом, мой вопрос: как сделать, если мои элементы ($('.text-block')
) находятся в переменной (например, $myElements
)?
(Второй вопрос должен был бы понять, почему только :focus
селектор :focus
работает для меня.)
Перебирайте каждый элемент и проверяйте, имеет ли он :focus
.
$('.text-block').each(function() {
if ($(this).is(':focus')) {
console.log('This element has focus!');
}
});
Я тестировал это с помощью некоторых базовых входов HTML, и он работает: http://jsbin.com/aTaqagOz/1/ (JSBin, над которым я работал, работал, но предварительный просмотр выглядит не таким)
Может быть, ваши элементы не фокусируются правильно?
focus
не запускается, когда я фокусируюсь на элементе, что странно
Попробуй это:
$('text').each(function() {
if ($(this).is(':focus')) {
console.log('This element has focus!');
}
});
как вы можете прочитать здесь http://api.jquery.com/focus-selector/ is(":focus")
- это путь. если он возвращает false, что означает, что он не имеет фокуса.
вы также можете получить сосредоточенный элемент по $( document.activeElement )
.
как указано в документе jquery, поддерживаемом с версии 1.6. Я знаю, что это длинный снимок, но может быть у вас более старая версия.
document.activeElement