PrototypeJS: выбор видимых элементов - PullRequest
3 голосов
/ 28 апреля 2009

Я пытаюсь сформулировать селектор для выбора набора видимых элементов. Наше приложение использует фреймворк 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>

Как видите, некоторые элементы могут иметь атрибут style, но только скрытые содержат строку "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

Идеи? В идеале я хотел бы, чтобы это было как можно более компактным, но я возьму то, что смогу получить.

Да, я знаю, что jQuery может сделать это , но я не хочу вводить другую платформу в это приложение, поскольку большая часть этого уже зависит от Prototype.

1 Ответ

10 голосов
/ 28 апреля 2009

Вы можете фильтровать элементы, используя функцию findAll :

var notVisible = $$('li').findAll(function(el) { return !el.visible(); });
...