I'm trying to find and replace URL's for each a element.
Each wrap has data-folder with a path to a file.
Each <a> element inside each wrap links to a file. The problem is that each <a> can be linked with folder up, like '../' or multiple- '../../../'.
I have to check how many '../' each has and for each '../' remove one folder. like '/folder/'
This is my HTML:
<div class="wrap" data-folder="data_folder_1/data_folder_2/data_folder_3/">
<a href="/folder1/folder1/_WAS_Modeller_DNK1.htm">Link</a>
<a href="../folder1/folder2/Modeller.htm">Link</a>
<a href="../../folder1/folder2/Modeller.htm">Link</a>
</div>
<div class="wrap" data-folder="data_folder_1/data_folder_2/data_folder_3/data_folder_4">
<a href="../folder1/folder2/folder3/Specifikationer.htm">Link</a>
</div>
And jQuery:
console.clear();
var wrap = $(".wrap");
$.each(wrap, function(index, value) {
var file = $(this).attr("data-folder");
var fileArray = file.split("/");
var links = $(this).find("a");
// loop for link elements (a), it looops 4 times in this case
$.each( links, function( ind, val ){
var $this = $(this);
var aHref = $(this).attr('href');
var hrToArr = aHref.split("/");
console.log(hrToArr);
$.each(hrToArr, function( indx, va ){
if( va == '..' ){
fileArray.pop();
$this.addClass( fileArray );
console.log(va);
}
});
})
});
The results should be:
<div class="wrap" data-folder="data_folder_1/data_folder_2/data_folder_3">
<a href="data_folder_1/data_folder_2/data_folder_3/folder1/folder1/_WAS_Modeller_DNK1.htm">Link</a>
<a href="data_folder_1/data_folder_2/folder1/folder2/Modeller.htm">Link</a>
<a href="data_folder_1/folder1/folder2/Modeller.htm">Link</a>
</div>
<div class="wrap" data-folder="data_folder_1/data_folder_2/data_folder_3/data_folder_4">
<a href="data_folder_1/data_folder_2/data_folder_3/folder1/folder2/folder3/Specifikationer.htm">Link</a>
</div>
Codepen here: https://codepen.io/rolandas/pen/XLEXPR?editors=1010
href="../../folder1/folder2/Modeller.htm"to actually point todata_folder_1/folder1/folder2/Modeller.htm- then all you need to do, is add that prefix into the href attribute content,href="data_folder_1/data_folder_2/data_folder_3/../../folder1/folder2/Modeller.htm"- no need to manually replace any../and keep count how many, etc.