Вызов функции в классе с элементами, имеющими определенные данные- *

0

Допустим, у меня есть следующий html:

<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="false" style="display: inline;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">

Если элементы скрыты, я сохраняю true в data-hidden поле, потому что мне нужно будет скрыть все элементы одновременно и, сохранив "состояние" в data-hidden поле, я уверен, что знаю, какие из них будут отображаться снова. То есть:

<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="false" style="display: none;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">

Я пытаюсь сделать это, используя jquery, set display: inline; только для элементов со data-hidden: 'false'?

Что у меня (что работает):

$(".expanded").each
    (function() {
        if($(this).attr('data-hidden')=='false'){
            $('.expanded').show();
        }
    });

И мой вопрос в том, есть ли лучший (более эффективный) способ, или это единственный способ сделать это?

  • 0
    «Что у меня есть (что работает):« То, что у вас есть, покажет все элементы с expanded классом, если у любого из них есть data-hidden=false , что, скорее всего, не то, что вы хотите.
  • 1
    Решение Аруна является правильным, но, как примечание, jQuery также имеет функцию данных, чтобы использовать data('hidden') вместо attr('data-hidden') .
Показать ещё 5 комментариев
Теги:

2 ответа

5
Лучший ответ

Вы можете просто использовать селектор атрибутов

$('.expanded[data-hidden="false"]').show()

Демо: скрипка

  • 0
    Кажется достаточно эффективным! Спасибо!
1

Попробуй это,

$(".expanded").filter(function(){
   return $(this).data('hidden') == 'false';
}).show();
  • 0
    Нет необходимости изобретать это колесо, у нас уже есть отличное .
  • 0
    @TJCrowder Я просто хотел показать другое решение. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню