Я изо всех сил пытаюсь найти решение для замены моего атрибута другим.Заменить атрибут внутри тега
Мой HTML является:
<a href="#" external>link</a>
Я хочу, чтобы заменить "внешний" с TARGET = "_ пустой"
ли это выполнимо?
Я изо всех сил пытаюсь найти решение для замены моего атрибута другим.Заменить атрибут внутри тега
Мой HTML является:
<a href="#" external>link</a>
Я хочу, чтобы заменить "внешний" с TARGET = "_ пустой"
ли это выполнимо?
Для этого вам не нужен jQuery.
Просто перебирать анкерные элементы с атрибутом external
с помощью селектора a[external]
и удалить атрибут external
и установить target
атрибут:
Array.prototype.forEach.call(document.querySelectorAll('a[external]'), function(a) {
a.removeAttribute('external');
a.setAttribute('target', '_blank');
});
Для чего это стоит, если вам нужна альтернатива jQuery, используйте:
$('a[external]').each(function() {
$(this).removeAttr('external');
$(this).attr('target', '_blank');
});
Поправьте меня, если я ошибаюсь, но это не делает то, что ОП описывает, даже если он делает то, что он хотел. Он сказал, что хочет заменить внешнюю цель = '_ blank'. Это удаляет внешние и добавляет target = '_ blank' независимо от того, был ли этот якорь внешним атрибутом. Ниже приведен ваш код и проверяется наличие внешнего атрибута, прежде чем что-либо делать.
Array.prototype.forEach.call(document.querySelectorAll('a'), function(a) {
if (a.getAttribute("external") != null) {
a.removeAttribute('external');
a.setAttribute('target', '_blank');
}
});
Простейшее решение было бы просто перебрать элементы с 'external' атрибута, используя селектор' а [внешние] '. Я обновил свой ответ, спасибо, что указал на это. –
Вы правы. Я знал, что у jQuery есть это, я не был уверен, что querySelectorAll тоже поддерживал его. Хороший улов – dman2306
Большое спасибо @JoshCrozier – qqruza