替换2个单词jquery之间的部分href

时间:2017-06-08 12:25:51

标签: javascript jquery

这很简单,我以前做过但现在无法正常工作。

我需要在href

下面更改图像的名称
var href="https://www.facebook.com/sharer/sharer.php?u=http://myurl.com/&description='tets'&picture=http://myurl.com/img/name-1654-45654.jpg" 

$('.share, .share-2').prop('href', function () {
    $(this).replace(/(picture=).*?(&)/,'$1' + imgNew + '$2');
}); 

4 个答案:

答案 0 :(得分:2)

由于href字符串是一个网址,因此您可以利用URL对象。

var imgNew = 'http://example.com/img.png';
var href = "https://www.facebook.com/sharer/sharer.php?u=http://myurl.com/&description='tets'&picture=http://myurl.com/img/name-1654-45654.jpg";
var url = new URL(href);
url.searchParams.set('picture', imgNew);
console.log(url.href);

请注意,目前并非所有浏览器都为supported,因此您可以使用polyfill

答案 1 :(得分:2)

replace函数是string的一种方法,因此您无法从replace调用$(this),因为它是一个jQuery对象,而不是字符串。

如果您需要更改href属性,请使用this.href = ...

编辑:当您使用jQuery.prop方法时,您应该将其用作文档建议。

$(".some-element").prop('some-prop', function(index, old_value){
    // do something
    return new_value;
});

代码段已更新



var new_img = "http://my.domain.com/img/my_new_image.jpg";
var regex_img = /\bpicture=[^&]*/

$('.share, .share-2').prop('href', function (index, old_href) {
    var new_href = old_href.replace(regex_img, 'picture=' + new_img);
    console.log(new_href);
    return new_href;
}); 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="https://www.facebook.com/sharer/sharer.php?u=http://myurl.com/&description='tets'&picture=http://myurl.com/img/name-1654-45654.jpg" class="share">Test</a>
<br>
<a href="https://www.facebook.com/sharer/sharer.php?u=http://myurl.com/&picture=http://myurl.com/img/name-1654-45654.jpg&description='tets'" class="share-2">Test-2</a>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您应该将代码更改为以下代码。

  href="https://www.facebook.com/sharer/sharer.php?u=http://myurl.com/&description='tets'&picture=http://myurl.com/img/name-1654-45654.jpg" 

    $('.share, .share-2').prop('href', function () {
        $(this).replace(/\/(?=[^\/]*$)/, '/newpicturename'));
       }); 

最后一个斜杠和后面的单词将被新的图片名称替换。

一个例子

var str = "http://one/two/three/four";
console.log(str.replace(/\/(?=[^\/]*$)/, '/newpicturename'));

答案 3 :(得分:-1)

 var href="https://www.facebook.com/sharer/sharer.php?
 u=http://myurl.com/&description='tets'&picture=http://myurl.com/img/name-
 1654-45654.jpg"
 href.split('/')
 ["https:", "", "www.facebook.com", "sharer", "sharer.php?u=http:", "", 
 "myurl.com", "&description='tets'&picture=http:", "", "myurl.com", "img", 
 "name-1654-45654.jpg"]
  href.split('/').length
 12
 href.split('/')[11]
"name-1654-45654.jpg"