Скрыть все дочерние классы div.class в TD, а затем показать сначала дочерний класс div.class
Следующее должно работать в теории, насколько мне известно, но это не так:
td small.attachments {
display: none;
}
td small.attachments:first-child {
display: inline-block !important;
}
<table>
<tr>
<td class="views-field-field-entry-images-fid">
<a href="#"><img src="x.jpg" /></a>
<small class="attachments">Files<div class="file-listing">Content A + B</div></small>
<small class="attachments">Files<div class="file-listing">Content B</div></small>
<small class="links">Links<div class="file-listing">Content C</div></small>
</td>
</tr>
</table>
В результате каждый раз, когда элемент small.attachments не имеет дочерних элементов small.attachment, он отображается нормально с примененным правилом first-child и переопределяет правило display:none.
Однако, когда в TD есть два элемента small.attachments, один за другим (в приведенном выше примере), ОБА скрываются, и правило первого ребенка не действует.
В чем дело?
PS: я тестировал в Safari и Firefox.
2 ответа
Так что, похоже, я неправильно понял намерение "первого ребенка".
В качестве IE-совместимого исправления я использовал jQuery, чтобы обернуть <small>
элементы в <div>
на человека <td>
основа.
Правила тогда работали как ожидалось и согласно спец.
<script type="text/javascript">
$("td.views-field-field-entry-images-fid").each(function() {
$(this).children("small").wrapAll("<div class='attachments-wrapper'></div>");
});
</script>
Спасибо за переподготовку!
Ненавижу говорить это, но "Это работает для меня", посмотрите этот пример JSBin:
http://jsbin.com/ovuro4/ ( http://jsbin.com/ovuro4/edit)
Обновленная версия: http://jsbin.com/ovuro4/3/edit на основе ваших отзывов ниже.
Как я понимаю из вашего поста, в этом случае "Файлы" -> "Содержимое A + B" должно быть видимым, а "Файлы" -> "Содержимое B" не должно быть видимым. Вот как это выглядит для меня, в Safari и FF.