Кажется, селектор jQuery :visible
не работает для некоторых встроенных элементов в Chrome.Решение состоит в том, чтобы добавить стиль отображения, например "block"
или "inline-block"
, чтобы он работал.
Также обратите внимание, что jQuery имеет несколько иное определение того, что видно, чем многие разработчики:
Элементы считаются видимыми, если они занимают место в документе.
Видимые элементы имеют ширину или высоту больше нуля.
Другими словамиэлемент должен иметь ненулевую ширину и высоту, чтобы занимать пространство и быть видимым.
Элементы с visibility: hidden
или opacity: 0
считаются видимыми, поскольку они по-прежнему занимают место в макете.
С другой стороны, даже если для visibility
установлено значение hidden
или непрозрачность равна нулю, он все равно :visible
для jQuery, поскольку он занимает место, что может сбивать с толку, когдаCSS явно говорит, что его видимость скрыта.
Элементы, которых нет в документе, считаются скрытыми;У jQuery нет способа узнать, будут ли они видны при добавлении к документу, поскольку это зависит от применяемых стилей.
Все элементы параметров считаются скрытыми независимо от их выбранного состояния.
Во время анимации, которая скрывает элемент, элемент считается видимым до конца анимации.Во время анимации, чтобы показать элемент, элемент считается видимым в начале анимации.
Самый простой способ посмотреть на него, это то, что если вы видите элемент на экране, даже есливы не можете видеть его содержимое, оно прозрачное и т. д., оно видно, т. е. оно занимает место.
Я немного очистил вашу разметку и добавил стиль отображения (, т.е. установил отображение элементов на"блок" и т. д. ), и это работает для меня:
FIDDLE
Официальная ссылка API для :visible
Начиная с jQuery 3, определение :visible
немного изменилось
jQuery 3 немного меняет значение :visible
(и, следовательно, :hidden
).
Начиная с этой версии, элементы будут считаться :visible
, если у них есть какие-либо поля макета, в том числе с нулевой шириной и / или высотой.Например, селектор :visible
выберет br
элементы и встроенные элементы без содержимого.