需要将字符串数据中的所有超链接更改为其他值

时间:2013-04-16 09:30:28

标签: javascript jquery

我有一个字符串中的链接列表。

var data='<ol>
     <li><a href="#/getpage/getData/1">A Christmas Carol</a></li>
     <li><a href="#/getpage/getData/2">Copyright</a></li>    
     </ol>'

需要使用javascript或jquery将字符串中的所有链接更改为以下格式。

data = '<ol>
  <li><a href="getCurrentPage(1)">A Christmas Carol</a></li>
  <li><a href="getCurrentPage(2)">Copyright</a></li>    
  </ol>'

任何人都可以在这方面帮助我。 提前谢谢。

6 个答案:

答案 0 :(得分:3)

尝试:

var data='<ol><li><a href="#/getpage/getData/1">A Christmas Carol</a></li><li><a href="#/getpage/getData/2">Copyright</a></li></ol>'
var el = $("<div>"+ data + "</div>");
el.find('li').each(function(i) {
    $(this).find('a').attr('href' , "getCurrentPage("+(i+1)+")");
});

data = el.html();
alert(data);

Sample Fiddle

对于未排序的字符串;

var data='<ol><li><a href="#/getpage/getData/1">A Christmas Carol</a></li><li><a href="#/getpage/getData/2">Copyright</a></li></ol>'
var el = $("<div>"+ data + "</div>");
el.find('li').each(function(i) {
    var num = $(this).find('a').attr('href').replace('#/getpage/getData/','');
   $(this).find('a').attr('href' , "getCurrentPage("+ num +")");
});
alert(el.html());

答案 1 :(得分:0)

您好,您可以使用以下脚本。

$("a").each(function(){
  var href=$(this).attr("href");
  $(this).attr("href","getCurrentPage("+href.substring(href.lenght-1,href.length)+")");
});

答案 2 :(得分:0)

也许你可以试试:

// use Regex to reformat the data
var myregex = new RegExp('<a href="#/getpage/getData/([0-9]+)">', 'g'); // g means "global", i.e. match all
var formated_data = data.replace(myregex, '<a href="getCurrentPage($1)">') // $1 is replaced by the content of the 1st parenthetis of the regex

这将在“#/ getpage / getData /”+任何整数形式下找到带有href的所有“a”标签,并在“getCurrentPage(”+整数形式)下用href替换“a”标签以上+ “)”。您也可以匹配href,而无需考虑“a”标记。

答案 3 :(得分:0)

$('a[href^="#/getpage/getData/"]').each(function(){
    var href = $(this).attr("href");
    var id = href.replace('#/getpage/getData/','');
    $(this).attr('href', 'getCurrentPage(' + id + ')');
});

您可以尝试here

答案 4 :(得分:0)

我觉得你已经找到了解决方案。只是我花了一些时间,我想分享我的解决方案。如果你不同意我的解决方案,我不介意。如果您只是看看解决方案,我将非常感激。

这是小提琴。 http://jsfiddle.net/ardeezstyle/ARPzA/

$('body').append('<div/>').find('div:last').addClass('temp');
$('.temp').html(data);
$('.temp a[href^="#/getpage/getData/"]').each(function(){
    var href = $(this).attr("href");
    var id = href.replace('#/getpage/getData/','');
    $(this).attr('href', 'getCurrentPage(' + id + ')');
});

data=$('.temp').html();

$('.temp').text(data);

干杯!

答案 5 :(得分:-2)

使用javascript的替换功能,http://www.w3schools.com/jsref/jsref_replace.asp