3

関数を使用してhrefを分割および置換しようとしています。コードは単純で簡単です。

html

<a href="http://nu.nl">nu.nl</a>

Jquery

 $(document).ready(function () {   

     function rep() {
         href = $('a').attr('href');
         url = href.split('/');         
         href.replace(url[2], 'cnn.com');
     }

     rep()
 });

ご覧のとおり、Imはドキュメントの準備ができた状態で関数を呼び出しています。運が悪かったので、attrの代わりに「prop」を試しました。私は何が間違っているのですか?例:JsFiddle

4

2 に答える 2

5

replace返されるものは使用しません。a要素の href を変更したい場合は、変更する可能性があります

href.replace(url[2], 'cnn.com');

$('a').attr('href', href.replace(url[2], 'cnn.com'));

さて、複数のa要素があると仮定すると、コード全体を次のように置き換えることをお勧めします

$('a').attr('href', function(_, href){
    url = href.split('/');          
    return href.replace(url[2], 'cnn.com');
});

デモンストレーション

必要に応じて、正規表現を使用して分割を回避することもできます。

$('a').attr('href', function(_, href){
     return href.replace(/\/\/[^\/]+/, '//cnn.com')
});
于 2013-01-22T09:49:51.300 に答える
1

document.ready ステートメント内で関数を定義する必要はありません

function rep(myURL, replaceWith) {
  var arr = myURL.split('/');          
  myURL = myURL.replace(arr[2], replaceWith);
  return myURL;
}

$(document).ready(function () {   
    $('a').attr('href', rep(
                            $('a').attr('href'), 
                            'cnn.com'
                           )
               );
});
于 2013-01-22T09:55:42.887 に答える