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

如您所见,我正在准备好文档中调用该函数。我尝试了'prop'而不是attr,但没有运气。我究竟做错了什么?示例: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 回答