Мне нужно выбрать один видимый элемент span в списке внутри div, например: $('#videoDesc > span:visible')
или $('#videoDesc > span').filter(':visible')
, и он не работает в webkit
Для этих элементов span установлено display: none;
в таблице стилей (я проверял удаление этого и ничего не изменилось). На теге style одного из них я установил его отображение на inline .
Отображение элементов span изменяется с помощью функций jQuery show () и hide ().
Если я вызываю $('#videoDesc > span:hidden');
с консоли Chrome, я получаю все элементы каждый раз, неважно, на каком из них я звонил show()
. Точно так же $('#videoDesc > span:visible');
возвращает мне пустой список: []
каждый раз.
В Firefox и IE у меня нет этой проблемы.
Я скопировал это с консоли Chrome. Как вы можете видеть, элемент span videoDesc-1 имеет style="display: inline;"
, и он все еще появляется при использовании :hidden
$('#videoDesc > span').filter(':hidden');
[<span id="videoDesc-1" style="display: inline;">…</span> ,
<span id="videoDesc-2">…</span> , <span id="videoDesc-3">…</span> ,
<span id="videoDesc-4">…</span>]
Это какая-то ошибка webkit?
Я смог обойти это, выполнив следующее:
$('#videoDesc > span').each(function(i, e) {
if (this.style.display != 'none') {
...
}
});
Но меня это беспокоит, так как кажется, что неправильное решение, правильное использование :visible
, но оно просто не работает с webkit
jQuery 1.6.4