我有很多div,其中一些是可见的;我想获得可见的ID:
以下代码始终返回第一个div;那是为什么?
alert($("div.my_div:visible").attr("id"));
答案 0 :(得分:1)
您正在使用visibility:hidden
css propery作为您的元素,因此:visible
选择器不会将其视为display:none
。所以你需要在这个上下文中做的是你必须通过检查集合中的元素是否具有属性visibility:hidden
来过滤集合,然后你必须使用.map()
对其id进行分组并根据您的需要使用.get()
和.join()
数组将该组作为数组生成任何分隔符。
尝试,
alert($("div.my_div")
.filter(function(){
return $(this).css('visibility') === "hidden";
})
.map(function(){
return this.id;
}).get().join(''));
答案 1 :(得分:1)
由于:visible
无法使用CSS'可见性("Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout."),您可以使用:
$("div.my_div").each(function () {
if ($(this).css('visibility') != 'hidden') console.log(this.id);
})
<强> jsFiddle example 强>