実行時にhref属性を設定する


202

jQueryを使用して実行時にタグのhref属性を設定する最良の方法は何<a>ですか?

また、jQueryを使用しhref<a>タグの属性の値をどのように取得しますか?

回答:


378

HTML要素の属性を取得または設定するには、element.attr()jQueryで関数を使用できます。

href属性を取得するには、次のコードを使用します。

var a_href = $('selector').attr('href');

href属性を設定するには、次のコードを使用します。

$('selector').attr('href','http://example.com');

どちらの場合も、適切なセレクターを使用してください。アンカー要素のクラスを設定している場合はを使用'.class-name'し、アンカー要素のIDを設定している場合はを使用します'#element-id'


1
これを使用してhrefを取得しました。alert($( "#publish-link")。attr( "href")); そして、それは私に「未定義」の警告を与えました。
gautamlakum 2010

3
これはおそらく、公開リンクがIDではなくクラスであることを意味します。try:alert($( "。publish-link")。attr( "href")); 代わりに
jim tollan

3
@ lakum4stackof:ここで使用している正確な

ああごめんなさい。あなたが正しいです。クラスを適用し、jqueryコードで「#」を使用しました。alert($( "。publish-link")。attr( "href"));で動作しました。本当にありがとう。:)
gautamlakum

18

jQuery 1.6以降では、次のように使用することをお勧めします。

$(selector).prop('href',"http://www...")値を設定し

$(selector).prop('href')値を取得する

要するに、.prop取得し、セットの値を上のDOMオブジェクト、および.attrの値を取得し、セットのHTML。これにより.prop、状況によっては少し速くなり、場合によっては信頼性が向上します。


1
.ATTRのみ取得する一方//www.../index.html:ます:http:「.propは」のような完全なパスを取得します同意し『index.htmlを』を
DevWL

14

href属性を設定します

$(selector).attr('href', 'url_goes_here');

そしてそれを使ってそれを読む

$(selector).attr('href');

ここで、「selector」は、<a>要素に有効なjQueryセレクターです(最も単純なものに名前を付けるには、「。myClass」または「#myId」)。

お役に立てれば !


これを使用してhrefを取得しました。alert($( "#publish-link")。attr( "href")); そして、それは私に「未定義」の警告を与えました。
gautamlakum 2010

@ lakum4stackof hrefは、セレクターが正しいと想定して、属性を設定する前にアラートコードを実行した可能性が最も高いです。
Valentin Flachsel、

2
try:alert($( "。publish-link")。attr( "href")); 要素がIDではなくクラスである可能性があるためです。実際、おそらくイベント内であれば$(this)を使用します
jim tollan

2

3つのソリューションの小規模なパフォーマンステストの比較:

  1. $(".link").prop('href',"https://example.com")
  2. $(".link").attr('href',"https://example.com")
  3. document.querySelector(".link").href="https://example.com";

ここに画像の説明を入力してください

ここで自分でテストを実行できますhttps://jsperf.com/a-href-js-change


以下の方法でhref値を読み取ることができます

  1. let href = $(selector).prop('href');
  2. let href = $(selector).attr('href');
  3. let href = document.querySelector(".link").href;

ここに画像の説明を入力してください

ここで自分でテストを実行できますhttps://jsperf.com/a-href-js-read


いいね!奇妙なことに、私はあなたと反対の結果を得ていますが、自分でそれらを実行できることは興味深いです。
HoldOffHunger

@HoldOffHungerはい-非常に興味深い-あなたのマシン、OS、ブラウザは何ですか?
カミルキエチェフスキ

1
FF59、Win10。結果は少し変わったようです(多分、開いているタブの数に依存します)が、ほとんど同じです:imgur.com/a/MLDnTWM Machine:10年前のIntelボード(dp55wg)、3.1ghzクアッドコア、 16 GBのddr3 ram、gtx1070。
HoldOffHunger 2018

1
<style>
a:hover {
    cursor:pointer;
}
</style>

<script type="text/javascript" src="lib/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $(".link").click(function(){
        var href = $(this).attr("href").split("#");
        $(".results").text(href[1]);
    })
})
</script>



<a class="link" href="#one">one</a><br />
<a class="link" href="#two">two</a><br />
<a class="link" href="#three">three</a><br />
<a class="link" href="#four">four</a><br />
<a class="link" href="#five">five</a>


<br /><br />
<div class="results"></div>

1
コードのみの回答は、有効なコードと役立つ説明がある回答ほど役に立ちません。この場合、5歳児に対するこの回答を説明する価値があります。
Somnath Muluk、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.