Reputation: 7
How to remove duplicate attr href but keep the first by Javascript or jQuery?
Below is the default code. And a.class
and id
can not change.
<div class="test-class">
<a href="test-0" class="link">Text0</a>
<a href="test-1" class="link">Text1</a>
<a href="test-1" class="link">Text1</a>
<a href="test-2" class="link">Text2</a>
<a href="test-2" class="link">Text2</a>
<a href="test-3" class="link">Text3</a>
<a href="test-3" class="link">Text3</a>
<a href="test-3" class="link">Text3</a>
</div>
I need to this:
<div class="test-class">
<a href="test-0" class="link">Text0</a>
<a href="test-1" class="link">Text1</a>
Text1
<a href="test-2" class="link">Text2</a>
Text2
<a href="test-3" class="link">Text3</a>
Text3
Text3
</div>
Upvotes: 0
Views: 419
Reputation: 1527
You can try with below javascript:
var hrefTags = document.getElementsByTagName('A');
var arrValue = [];
for (var i=0; i<hrefTags.length; i++){
if(arrValue.indexOf(hrefTags[i].innerHTML)>-1){
hrefTags[i].outerHTML = hrefTags[i].outerHTML.replace(/a/g, 'span');
i--;
} else {
arrValue.push(hrefTags[i].innerHTML);
}
}
<div class="test-class">
<a href="test-0" class="link">Text0</a>
<a href="test-1" class="link">Text1</a>
<a href="test-1" class="link">Text1</a>
<a href="test-2" class="link">Text2</a>
<a href="test-2" class="link">Text2</a>
<a href="test-3" class="link">Text3</a>
<a href="test-3" class="link">Text3</a>
<a href="test-3" class="link">Text3</a>
</div>
Upvotes: 0
Reputation: 1969
Sorry for late response, but this is my answer: :D
$(window).on('load',function() {
var last_elm = $('a[href]:first').text();
$('a[href]').each(function(i) {
var content = $(this).text();
if (i && content==last_elm) $(this).replaceWith('<span>'+content+'</span>');
last_elm=content;
});
});
Upvotes: 0
Reputation: 408
Something like this would do approximately what you are looking for:
let tracker = {}; // track href values
$('a').each(function(anc) {
var href = $(this).attr('href');
if (tracker.hasOwnProperty(href)) {
$(this).replaceWith(`<div>${$(this).text()}</div>`);
} else {
tracker[href] = true;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test-class">
<a href="test-0" class="link">Text0</a>
<a href="test-1" class="link">Text1</a>
<a href="test-1" class="link">Text1</a>
<a href="test-2" class="link">Text2</a>
<a href="test-2" class="link">Text2</a>
<a href="test-3" class="link">Text3</a>
<a href="test-3" class="link">Text3</a>
<a href="test-3" class="link">Text3</a>
</div>
Upvotes: 1