PrototypeJS:选择可见元素

Zac*_*man 3 javascript css-selectors prototypejs

我正在尝试制定一个选择器来选择一组可见元素.我们的应用程序使用Prototype JavaScript框架,版本1.6.0.3.

我正在使用的标记如下:

<ul>
    <li style="display:none;">1 Hidden</li>
    <li style="display:none;">2 Hidden</li>
    <li style="">3 Visible</li>
    <li style="display:none;">4 Hidden</li>
    <li style="display:none;">5 Hidden</li>
    <li style="display:none;">6 Hidden</li>
    <li>7 Visible</li>
    <li style="">8 Visible</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如您所见,某些元素可能具有样式属性,但只有隐藏的元素包含字符串"display:none;".我需要选择<li>可见的元素,其中可见性定义为"不包含display:none".

我尝试过的东西:

var visibleItems = $$('li[style*="display:none"]'); // Yields: [ ]
var visibleItems = $$('li[style*="display"]'); // Yields: [li, li, li, li, li], but isn't specific enough
Run Code Online (Sandbox Code Playgroud)

想法?理想情况下,我希望它尽可能紧凑,但我会采取我能得到的.

是的,我知道jQuery可以做到这一点,但我不想在这个应用程序中引入另一个框架,因为它的大部分已经依赖于Prototype.

CMS*_*CMS 10

您可以使用findAll函数过滤项目:

var notVisible = $$('li').findAll(function(el) { return !el.visible(); });
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题,如果CSS隐藏了这些元素,这个答案将不起作用.在这种情况下,该函数将它们返回为可见.我还在寻找并回答...... (3认同)