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>

アンカータグ内のすべてを検索し、同じリンクで?source =abcabc.global.comに置き換えてcab.global.com追加する方法が必要です。

では、id = "clicker"を含むdivの下の各タグをトラバースして、anchorhref値を置き換えるにはどうすればよいでしょうか。

4

5 に答える 5

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 に答える
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 に答える
0

jsBinデモ

$('a[href*=abc]').each(function(){
    return this.href = this.href.replace('abc', 'cab')+'?source=abc';
}); 
于 2012-09-13T13:35:47.317 に答える
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 に答える
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 に答える