替换链接和文本,如果文本包含:

时间:2014-08-14 12:06:17

标签: javascript jquery

如果它们包含某些文本,我需要替换一些链接,每个链接的URL在主机站点上从服务器更改为服务器,因此我只能使用文本替换。 在下面的html中,我需要找到包含“Rosters”和“Forums”的ul#hsubmenuitems,并用2个新的链接和URL路径替换它们

<div id="hsubmenu">
    <ul id="hsubmenuitems">
        <li></li>
        <li></li>
        <li><a href="#">Scoreboard</a>
        </li>
        <li><a href="#">Rosters</a>
        </li>
        <li><a href="#">Forums</a>
        </li>
    </ul>
</div>

更改为:

<div id="hsubmenu">
    <ul id="hsubmenuitems">
        <li></li>
        <li></li>
        <li><a href="#">Scoreboard</a>
        </li>
        <li><a href="NEW URL 1">NEW LINK 1</a>
        </li>
        <li><a href="NEW URL 2">NEW LINK 2</a>
        </li>
    </ul>
</div>

我目前正在使用CSS删除我不想要的链接,然后使用jQuery添加一个新的链接,但我知道有一种更有效的方式,我只是不能流利的jQuery来弄明白。

$("#hsubmenuitems").append('<li><a href="NEW URL 1">NEW LINK 1</a></li>');

4 个答案:

答案 0 :(得分:3)

使用:contain()即可:

$("#hsubmenuitems a:contains('Rosters')").text('new link').attr('href', 'new href');
$("#hsubmenuitems a:contains('Forum')").text('new link').attr('href', 'new href');

更多ifo,http://api.jquery.com/contains-selector/

以下是演示http://jsfiddle.net/cepdmfLo/

请记住将代码放入文档中。

要更新目标属性,它与href版本非常相似。以下示例将目标属性设置为_blank

$("element").attr('target', '_blank');

请参阅http://api.jquery.com/attr/了解详情

你可以链接整个事物

$("#hsubmenuitems a:contains('Rosters')").text('new link').attr('href', 'new href').attr('target', '_blank');

http://jsfiddle.net/cepdmfLo/2/&#39;名册&#39;新链接有目标

答案 1 :(得分:0)

试试这个:

$(function(){
   $('ul#hsubmenuitems li').each(function(){
       var text = $(this).text();
       if(text.indexOf('Rosters')!=-1)
       {
         $(this).text('NEW LINK 1');
         $(this).attr('href','NEW URL 1');
       }
       else if(text.indexOf('Forums')!=-1)
       {
         $(this).text('NEW LINK 2');
         $(this).attr('href','NEW URL 2');
       }
   });
});

<强> Demo

答案 2 :(得分:0)

这是一个示例,它将找到具有指定文本的链接,并用新文本和href替换它们。希望这会有所帮助:JsFiddle

$(document).ready(function(){

var searchTerms = ["Rosters","Forums"];

$("a").each(function(index, element){       
    var linkText = $(this).text();        
    var inArray = $.inArray(linkText, searchTerms);        
    if (inArray !== -1)
    {
        $(this).attr("href", "http://www.google.com");
        $(this).text("Google " + index);
    }      
});
});

答案 3 :(得分:0)

在jquery中使用 replaceWith() 来替换某个链接

$('ul#hsubmenuitems li a[href=#]:contains(Rosters)').replaceWith("<a href=NEW URL 1>NEW LINK 1</a>")

$('ul#hsubmenuitems li a[href=#]:contains(Forums)').replaceWith("<a href=NEW URL 2>NEW LINK 2</a>");

DEMO