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

Replace link and text , if text contains :

本文关键字:文本 包含 如果 替换 链接      更新时间:2023-09-26

我需要替换一些链接,如果它们包含某些文本,每个链接的url从服务器到主机站点上的服务器更改,所以我只能使用文本替换。在下面的html中,我需要找到包含"名单"answers"论坛"的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>');

使用:contain()您可以做:

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

更多信息,请访问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/'Roster'新链接有目标

试试这个:

$(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');
       }
   });
});

下面是一个示例,它将查找带有指定文本的链接,并用新文本和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);
    }      
});
});

在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>");