2015-04-08 4 views
1

Я изо всех сил пытаюсь найти решение для замены моего атрибута другим.Заменить атрибут внутри тега

Мой HTML является:

<a href="#" external>link</a> 

Я хочу, чтобы заменить "внешний" с TARGET = "_ пустой"

ли это выполнимо?

ответ

3

Для этого вам не нужен jQuery.

Просто перебирать анкерные элементы с атрибутом external с помощью селектора a[external] и удалить атрибут external и установить target атрибут:

Example Here

Array.prototype.forEach.call(document.querySelectorAll('a[external]'), function(a) { 
    a.removeAttribute('external'); 
    a.setAttribute('target', '_blank'); 
}); 

Для чего это стоит, если вам нужна альтернатива jQuery, используйте:

Example Here

$('a[external]').each(function() { 
    $(this).removeAttr('external'); 
    $(this).attr('target', '_blank'); 
}); 
+0

Большое спасибо @JoshCrozier – qqruza

1

Поправьте меня, если я ошибаюсь, но это не делает то, что ОП описывает, даже если он делает то, что он хотел. Он сказал, что хочет заменить внешнюю цель = '_ blank'. Это удаляет внешние и добавляет target = '_ blank' независимо от того, был ли этот якорь внешним атрибутом. Ниже приведен ваш код и проверяется наличие внешнего атрибута, прежде чем что-либо делать.

Array.prototype.forEach.call(document.querySelectorAll('a'), function(a) { 
    if (a.getAttribute("external") != null) { 
     a.removeAttribute('external'); 
     a.setAttribute('target', '_blank'); 
    } 
}); 
+1

Простейшее решение было бы просто перебрать элементы с 'external' атрибута, используя селектор' а [внешние] '. Я обновил свой ответ, спасибо, что указал на это. –

+0

Вы правы. Я знал, что у jQuery есть это, я не был уверен, что querySelectorAll тоже поддерживал его. Хороший улов – dman2306

Смежные вопросы