Добавление границы для ссылок и удаление ее, если она содержит некоторые img, невозможно в CSS, с или без: not ()
Вы не можете выбрать элемент в зависимости от его потомков (CSS не XPath), и вы не можете повлиять на стиль родителей.
Я бы использовал селекторы jQuery (если быть точным, Sizzle) и добавил класс в зависимости от наличия изображения:
<style type="text/css">
.underline { border: 4px dotted #333; }
a img { border:0; /* remove the default blue border from images within links */}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('a:not(:has(img))').addClass('underline');
});
Еслиу вас есть не только 100% текст и ссылки> img: only-child, но также текст + img, смешанный в ссылках, вы также можете нацеливать img:only-child
или переносить текст в ссылках (кроме img
) в span
элементах, чтобыстиль смешанных ссылок определенным образом, если у вас есть эти крайние случаи на вашей странице.