Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   выборка элементов (https://javascript.ru/forum/jquery/10948-vyborka-ehlementov.html)

jetli13 30.07.2010 12:28

выборка элементов
 
Подскажите пожалуйста
как выбрать все элементы у которых display = none
Пробовал :hidden выбирает только те у которых visibility = hidden

Octane 30.07.2010 12:30

Расскажите, что вы хотите сделать, может быть предложим другой вариант решения, а не поиск элементов по CSS-свойствам.

Ну а вообще как-то так должно работать:

$("*").filter(function () {
    return $(this).css("display") == "none";
});

jetli13 30.07.2010 12:35

задача - подсветка слов в тексте
пользователь ввел слово, мне его нужно найти в тексте и подсветить. Но я не должен находить слова которые внутри скрытых блоков.
Поэтому я хочу найти все скрытые блоки для того чтоб в дальнейшем не подсвечивать внутри них.

Octane 30.07.2010 12:40

А не лучше ли скрывать блоки при помощи CSS-класса?
.hidden { display: nonde; }

<div class="text hidden">…</div>

Например, покажем все блоки .text:
$(".text").removeClass("hidden")

Снова скроем:
$(".text").addClass("hidden")

Ну и найти скрытые блоки теперь совсем не сложно.

jetli13 30.07.2010 12:42

К сожалению тексты ко мне уже приходят такими какие они есть. По классу конечно было бы лучше.

Но вот этот вариант думаю вполне подойдет

Цитата:

Сообщение от Octane (Сообщение 65597)

$("*").filter(function () {
    return $(this).css("display") == "none";
});

Спасибо!

Kolyaj 30.07.2010 12:43

Цитата:

Сообщение от jetli13
Но я не должен находить слова которые внутри скрытых блоков.

А кто сказал, что скрытый -- это display: none? Это может быть и упомянутый уже visibility: hidden, и top: -9999px, и left: -9999px, и opacity: 0, и под каким-нибудь слоем лежать.

jetli13 30.07.2010 12:48

Цитата:

Сообщение от Kolyaj (Сообщение 65606)
А кто сказал, что скрытый -- это display: none?

Особенности нашего проекта )
Потому другие варианты не рассматриваю

jetli13 30.07.2010 13:28

Цитата:

Сообщение от Octane (Сообщение 65597)

$("*").filter(function () {
    return $(this).css("display") == "none";
});

(((
работает так же как по фильтру hidden
Ищу варианты ....
Ес что найду или пойму в чем дело напишу

Kolyaj 30.07.2010 13:35

$('*').filter(function() {
    return this.offsetWidth;   // Отбираем видимые элементы
    return !this.offsetWidth;  // Отбираем невидимые элементы
});

jetli13 30.07.2010 13:53

Цитата:

Сообщение от Kolyaj (Сообщение 65622)
$('*').filter(function() {
    return this.offsetWidth;   // Отбираем видимые элементы
    return !this.offsetWidth;  // Отбираем невидимые элементы
});

:victory: работает!


Часовой пояс GMT +3, время: 07:48.