2016-12-17 2 views
2

Мне нужно направить последний элемент <a>, но с некоторыми условными обозначениями. В этом случае текст создается через CMS, который ограничивает меня возможностью добавления класса. Я создал jsfiddle, чтобы показать свою проблему. В последнем <a> должен быть шрифт, который является удивительным углом в его :after другом <a> элементов нет. Я не могу использовать что-то вроде :last-child a, потому что пользователю/текстовому автору не нужно писать ссылку по умолчанию. Существует также возможность другого абзаца после первого. Поэтому ничто не является дефолтом, но последний элемент <a>, который стоит отдельно от абзаца с каким-то фактическим текстом, должен иметь значок.Задайте последний элемент A с условными обозначениями

Это нелегко объяснить, но jsfiddle объяснит это, поэтому, пожалуйста, взгляните. было бы неплохо, если бы было решение CSS. если не jQuery на втором месте.

Заранее благодарен!

+0

: последний coud будет подсказкой, но действительно ли это реально? https://jsfiddle.net/6xLpz6nj/10/ В контейнере, заполненном пользователем, есть идентификатор, класс, конкретная оболочка или всегда находится в одном месте в дереве вашего шаблона? . У нас недостаточно информации для эффективного ответа :) –

+0

В действительности есть контейнер с классами, в котором содержатся все абзацы. но нет классов внутри оттуда – Wilco

+0

хорошо, как насчет ссылки, которую он держит (атрибуты href или title), есть ли у них что-то общее и peticular? .... без ваших реальных случаев, это будут только забавные ответы, что вы получите –

ответ

0

Насколько я знаю, это невозможно с помощью только CSS.

Как насчет JavaScript:

var element = document.getElementsByTagName("a"); 
for(var i=0; i < element.length; i++) { 
    var el = element[i] 
    var x = el.parentNode.innerText.length; 
    var y = el.innerText.length 
    if (x === y) { 
     el.classList.add('icon'); 
    } 
} 

CSS:

.icon::after{ 
    content: "\f105"; 
    margin-left:5px; 
    font-family: FontAwesome; 
    background-color: transparent; 
} 

Он добавляет .icon класс для всех <a> элементов, которые не обернутых рядный с текстом в родительском элементе.

+0

Точно то, что мне нужно! Спасибо! – Wilco

+0

Есть ли возможность указать, какой ''? его всегда в контейнере с классом «блок». – Wilco

+0

В файле CSS напишите:. .block .icon :: after {...} '. Будет ли это работать на вас? Будет ли один контейнер с классом 'block' или несколькими? – unitario

0

Вы можете настроить таргетинг на последний тег p.

p:last-of-type a::after{ 
    content: "\f105"; 
    margin-left:5px; 
    font-family: FontAwesome; 
    background-color: transparent; 
} 
+0

, который работает для любого последнего p любой части документа, нам нужно больше деталей ...см. мой комментарий, я предпочитаю не размещать в качестве ответа :) –

+1

Как я и пытался объяснить. есть ситуации, когда нет элемента '' после первого абзаца, кроме одного в первом абзаце, который не должен получать значок. – Wilco

+0

@wilco, можете ли вы детализировать структуру своего шаблона (см. Мой комментарий), если вы хотите получить эффективный ответ –