首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery:我需要像':visible‘这样的东西,即使父级为display=none也能正常工作

jQuery:我需要像':visible‘这样的东西,即使父级为display=none也能正常工作
EN

Stack Overflow用户
提问于 2010-04-07 02:05:26
回答 2查看 142关注 0票数 1

我有一个列表,其中的元素由于多种原因被隐藏,每个元素对应一个css类,即:

代码语言:javascript
复制
<style>
    .filteredOut { display: none; }
    .somethingElse { display : none; }
    ...
</style>

我想通过.filter(':even').addClass('even')应用交替的css类,但只应用于可见的类。问题是当发生这种情况时,父元素是隐藏的,所以.filter(':visible')返回0个元素。我需要像.filter(':visibileEventIfParentIsNot')这样的东西

此外,我不希望每次调用更改列表中可见内容的函数时都调用包含此参数的函数。这可能是白日梦,但有没有办法做到这一点,即live()或类似的东西?我对非主流的想法持开放态度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-07 02:51:06

对于.filter(':visibileEventIfParentIsNot'),您可以编写自己的过滤器函数,如下所示:

代码语言:javascript
复制
.filter(function() {
   return $(this).css("display") != 'none';
})

注意,这并不包括可见性,只是像.hide()这样的传统jQuery案例,它实际上与.css('display', 'none')是相同的。

但是如果您正在执行交替的行样式,并且突然显示了奇数个元素,这看起来是不正确的,我认为当某些内容的可见性发生变化时(可能是带有.resize() plugin.resize()事件?),您最好还是使用.filter(':even')应用程序。

票数 1
EN

Stack Overflow用户

发布于 2010-04-07 02:27:10

使用类来控制您的事件。如果要过滤隐藏元素,请向子级添加必要的类。当它们变得可见时,浏览器将重排css。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2587168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档