Допустим, у меня есть следующий 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();
}
});
И мой вопрос в том, есть ли лучший (более эффективный) способ, или это единственный способ сделать это?
Вы можете просто использовать селектор атрибутов
$('.expanded[data-hidden="false"]').show()
Демо: скрипка
Попробуй это,
$(".expanded").filter(function(){
return $(this).data('hidden') == 'false';
}).show();
expanded
классом, если у любого из них естьdata-hidden=false
, что, скорее всего, не то, что вы хотите.data('hidden')
вместоattr('data-hidden')
.