У меня много div, некоторые из которых видны; Я хочу получить ID видимых:
Следующий код всегда возвращает первый div; это почему?
alert($("div.my_div:visible").attr("id"));
2 ответа
Поскольку :visible
не работает с видимостью CSS ("Элементы с видимостью: скрытые или непрозрачные: 0 считаются видимыми, поскольку они по-прежнему занимают место в макете ".), вы можете использовать:
$("div.my_div").each(function () {
if ($(this).css('visibility') != 'hidden') console.log(this.id);
})
Вы используете свойство visibility:hidden
css для своего элемента, поэтому селектор :visible
не будет рассматривать это как display:none
. Итак, что вам нужно сделать в этом контексте, вы должны отфильтровать коллекцию, проверив, имеют ли элементы в коллекции свойство visibility:hidden
или нет, затем вы должны сгруппировать его идентификатор, используя .map()
и сделайте эту группу массивом, используя .get()
и .join()
этот массив в соответствии с вашими потребностями с любыми разделителями ..
Пытаться,
alert($("div.my_div")
.filter(function(){
return $(this).css('visibility') === "hidden";
})
.map(function(){
return this.id;
}).get().join(''));
ДЕМО
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.
:visible
?:visible
не проверяет только атрибутdisplay
css?