런타임시 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');

두 경우 모두 적절한 선택기를 사용하십시오. anchor 요소의 클래스를 설정 한 '.class-name'경우 사용 하고 anchor 요소 의 id를 설정 한 경우을 사용하십시오 '#element-id'.


1
나는 이것을 href를 얻기 위해 사용했다. alert ($ ( "# publish-link"). attr ( "href")); 그리고 그것은 "정의되지 않은"경고를 주었다.
gautamlakum

3
아마도 게시 링크가 ID가 아닌 클래스라는 것을 의미합니다. try : alert ($ ( ". publish-link"). attr ( "href")); 대신
jim tollan

3
@ lakum4stackof : 당신은 당신이 :) 여기에 사용하는 정확한 <A> 태그를 게시 할 경우 도와 줄

아 죄송합니다. 네 말이 맞아 클래스를 적용했으며 jquery 코드에서 '#'을 사용했습니다. alert ($ ( ". publish-link"). attr ( "href")); 정말 고마워. :)
gautamlakum

18

jQuery 1.6 이상에서는 다음을 사용하는 것이 좋습니다.

$(selector).prop('href',"http://www...")값 을 설정 하고

$(selector).prop('href')가치 를 얻기 위해

즉, .propGET 및 SET 값을에 DOM의 객체, 및 .attr의 값을 얻고 설정 HTML . 이것은 .prop일부 상황에서 조금 더 빠르고 더 안정적입니다.


1
HTTP :처럼 전체 경로를 얻을 것이다 '.prop을'동의 //www.../index.html을 .attr은 얻을 것이다 동안 '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

@ lakum4stack href의 선택기가 정확하다고 가정하면 속성 을 설정하기 전에 경고 코드를 실행했을 가능성이 큽니다 .
Valentin Flachsel

2
try : alert ($ ( ". publish-link"). attr ( "href")); 요소가 ID가 아닌 클래스 일 수 있습니다. 사실, 이벤트 안에 있다면 아마도 $ (this)를 사용하는 것입니다
jim tollan

2

세 가지 솔루션에 대한 소규모 성능 테스트 비교 :

  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 및 브라우저는 무엇입니까?
Kamil Kiełczewski

1
FF59, Win10. 결과는 다시 약간 변경된 것으로 보이며 (열린 탭 수에 따라 다름) imgur.com/a/MLDnTWM 기계 : 10 년 된 인텔 보드 (dp55wg), 3.1ghz 쿼드 코어, 16GB DDR3 RAM, GTX1070.
HoldOffHunger

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 2011
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.