1

我有一个包含如下元素的 div

<input type="hidden" name="subscribe_message" value="Success"/>
<div class="titleBlue">Alerts</div>
<table cellpadding="2" cellspacing="0" width="100%"><tr><td align="LEFT" height="35">
<tr>
<td><a style="cursor:hand;text-decoration:underline" target="_blank" href="https://abc.global.com/kb/solution/21/Pages/136776.aspx">ab1</a></td>
</tr>
<tr>
<td><a style="cursor:hand;text-decoration:underline" target="_blank" href="https://abc.global.com/kb/solution/21/Pages/136775.aspx">ab2</a></td>
</tr>
<tr>
<td><a style="cursor:hand;text-decoration:underline" target="_blank" href="https://abc.global.com/kb/solution/21/Pages/136774.aspx">ab3</a></td>
</tr>
<tr>
<tr>
<td><a href='#' onClick="javascript:window.open('https://my-prod.global.com/gmm2/kb/dlink.do?externalId=<a style="cursor:hand;text-decoration:underline" target="_blank" href="https://abc.global.com/kb/solution/20/Pages/157468.aspx">157468 </a></td>       
</tr>
<tr>
<td><a style="cursor:hand;text-decoration:underline" target="_blank" href="https://abc.global.com/kb/solution/20/Pages/147468.aspx">147468 </a></td>
</tr>
</table>

我需要一种方法来查找锚标记中的所有内容,并在同一链接中abc.global.com替换cab.global.com并附加?source=abc 。

那么如何遍历包含 id="clicker" 的 div 下的每个 a 标签并替换锚点 href 值呢?

4

5 回答 5

1

尝试这个:

$( 'div#clicker a' ).each(function(o){
   var _anchor = $(this).attr('href');

   if(_anchor.indexOf( 'abc.global.com' )!=-1) {
      _anchor = _anchor.replace( 'abc.global.com', 'cba.global.com' );
      _anchor = modify( _anchor );
      $(this).attr('href',_anchor);
   }
});

function modify( anchor ) {
    if( anchor.indexOf( '?' ) != -1 ) {
        anchor = anchor.replace( anchor.indexOf( '?' ), '?source=abc&' );
    } else if( anchor.indexOf( '#' ) != -1 ) {
        anchor = anchor.replace( anchor.indexOf( '#' ), '?source=abc#' );
    } else {
        anchor += '?source=abc';
    }

    return anchor;
}

希望能帮助到你。

于 2012-09-13T13:27:11.043 回答
1

这个脚本应该做你想做的事:

$(document).ready(function(){
    // loop over all links inside the table
    $("a", "#clicker").each(function(){
        var href = $(this).attr('href');

        if(href.indexOf("abc.global.com") >= 0){
            // replace domain
            href = href.replace("abc.global.com", 'cab.global.com');
            // append source param
            href += "?source=abc";
            $(this).attr('href', href);
        }  
    });
});​

工作小提琴

于 2012-09-13T13:30:45.350 回答
0

jsBin 演示

$('a[href*=abc]').each(function(){
    return this.href = this.href.replace('abc', 'cab')+'?source=abc';
}); 
于 2012-09-13T13:35:47.317 回答
0

尝试这个

$('a').each(function(a){
if ($(this).attr('href').toLowerCase().indexOf("abc.global.com") >= 0){

$(this).attr('href',$(this).attr('href').replace('abc.global.com','cab.global.com'));
$(this).attr('href',$(this).attr('href') + '?source=abc')
    }
});

这是一个http://jsfiddle.net/MgsrV/

于 2012-09-13T13:37:37.980 回答
0

如果可以简单地遍历整个网站上的每个标签,您可以使用

var links = document.getElementsByTagName("a");

获取所有这些的列表。然后只需循环它们并在适当的地方更改href

for (var i = 0; i < links.length; i++)
{
    if (links[i].href.search("abc.global.com") != -1)
    {
        links[i].href.replace("abc.global.com", "cab.global.com");
        links[i].href += "?source=abc";
    }
}

您可能希望将 href 临时保存在变量中以提高性能,并可能添加一些安全检查。

于 2012-09-13T13:34:29.977 回答