2017-06-08 11 views
-1

これは簡単で、以前はやったことがありますが、今すぐ動作させることはできません。2つの単語の間でhrefの部分を置き換えます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'); 
}); 
+0

これも – AthMav

+0

、私はこのエラー$(...)を取得しています "=写真" を置き換えます置き換えではありません。関数。 –

+0

期待される出力が何であるべきか、あるいは 'imgNew'が何であるかははっきりしませんが、URLオブジェクトはおそらく行く方法です。私は以下に答えた。 – styfle

答えて

2

replace機能はstringの方法であり、それはjQueryオブジェクトではなく文字列であるので、あなたが$(this)からreplaceを呼び出すことはできません。

href属性を変更する必要がある場合は、this.href = ...を使用してください。

EDITjQuery.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>

+0

完璧、ありがとう –

+0

これは実際の問題、すなわち '$ .prop(attribute、function)'の使い方を修正しません。それに応じて回答を修正することをお勧めします。質問に関する私のコメントを参照してください。 –

+0

実際に彼は必要なことをするために '$ .prop'を使う必要はありません。だから私は 'this.href'を使うことを提案したのです。彼の間違いは '$(this).replace'を使用しようとしていました。 実際の問題がhrefの 'picture'パラメータを変更していると思いませんか? '$ .prop'関数の使用については考えていません。 – fernandosavio

-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" 
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'));

2

href文字列がURLであるので、あなたは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);

あなたがpolyfillを使用できるように、すべてではないブラウザでは、この時点でsupportedされることに注意してください。

+0

私が理解する限り、この質問はURLを置き換える方法ではなく、jQueryの '$ (...)。prop(属性、関数) '。 –

+0

完全なコードなしでどの部分が失敗しているのかを知るのは難しいです。 – styfle

+0

答えに[browser compatibility](https://developer.mozilla.org/ja/docs/Web/API/URL#Browser_compatibility)を追加するとよいでしょう。 – fernandosavio

関連する問題