jquery에서 href를 업데이트 (추가)하는 방법은 무엇입니까?


79

Google지도 API로 연결되는 링크 목록이 있습니다.

링크에는 이미 daddr(destination) 매개 변수가 정적으로 있습니다. Geo-Location을 사용하여 사용자 위치를 찾고 saddr데이터를 받으면 링크에 (소스 주소)를 추가하고 싶습니다 .

그래서 기본적으로 &saddr=50.1234567,-50.03452Google지도를 가리키는 모든 링크의 꼬리 끝에 같은 것을 추가해야 합니다.

모든 링크에는 directions-link

과에서 이 페이지 내가 그들을 변경하는 방법을 알아 낸 :

$("a.directions-link").attr("href", "http://www.google.com/");

그러나 href가 이미 무엇인지 변경하지 않고 href 끝에 내 가치를 추가하고 싶습니다.

어떻게 할 수 있습니까?

답변:


149
var _href = $("a.directions-link").attr("href");
$("a.directions-link").attr("href", _href + '&saddr=50.1234567,-50.03452');

루프하려면 each()

$("a.directions-link").each(function() {
   var $this = $(this);       
   var _href = $this.attr("href"); 
   $this.attr("href", _href + '&saddr=50.1234567,-50.03452');
});

감사합니다. href가 다른 길 찾기 링크가 둘 이상있는 경우이 작업이 작동합니까? 감사합니다!
— JD Isaacks

각 인스턴스에 대해 동일한 것을 추가하는 경우 a.directions-link예. 그렇지 않으면 각 href에 다른 값을 추가하는 경우를 사용 each()하여 각 값을 반복하고 추가해야합니다.
— Gabe

동일한 값을 추가하고 있지만 각 href는 처음부터 다릅니다. 따라서 첫 번째가 one.html이고 두 번째가 two.html이면 둘 다 one.html & saddr이됩니다. 첫 번째 a.directions-link의 href 만 캡처하고 모두를 위해 사용하기 때문입니다. 그래서 each ()를 사용해야한다고 생각합니다. 그것의 사용에 대해 eleborate에 관심이 있습니까? 감사!!
— JD Isaacks

네, 루프는 제가 필요한 것입니다. 감사합니다! :)
— JD Isaacks

41

jQuery 1.4에는이를위한 새로운 기능이 있으며 규칙이 적용됩니다. 나는 그것이 무엇인지 잊어 버렸지 만 다음과 같이 사용합니다.

$("a.directions-link").attr("href", function(i, href) {
  return href + '?q=testing';
});

그것은 모든 요소를 ​​반복하므로 $ .each가 필요하지 않습니다.


4
그것은 나를 위해 작동하지 않았지만 작동했습니다 .attr('href', function(i) { return $(this).attr('href') + '?q=testing'; }).
— Elbert Alias

3
@elfbertf 그것은 나를 위해 작동합니다. jquery> = 1.4를 사용하고 있습니까? 두 번째 인수로 href 변수를 포함 시켰습니까?
— zaius 2011-04-07

$ ( "# calculator"). attr ( "href", function (i, href) {return href + '? ves ='+ 23 + '& v ='+ 'sdfds';}); 하지 작업
— des1roer

jsfiddle.net/qz9eLr2z 에서 테스트하면 작동합니다. api.jquery.com/attr/#attr-attributeName-function 은 이것이 jQuery 1.1에 추가 되었다고 말합니다.
— Jacob C.

1
@JacobC. attr이 함수를 받도록 허용하는 것은 1.1에서 추가되었지만 현재 값을 두 번째 매개 변수로 전달하는 것은 1.4에서 추가되었습니다. 다음은 jquery 1.3에서 작동하지 않는 예입니다. jsfiddle.net/qz9eLr2z/1
— zaius

2
$("a.directions-link").attr("href", $("a.directions-link").attr("href")+"...your additions...");

1
이것은 잘못된 것입니다. 첫 번째로 일치하는 ".directions-link"의 href를 해당 클래스의 모든 링크에 적용합니다. jsfiddle.net/yuezewaw
— Jacob C.

-1

다음은 URL에 특정 문자가 포함 된 URL에 매개 변수를 추가하기 위해 시도한 것입니다.

jQuery('a[href*="google.com"]').attr('href', function(i,href) {
        //jquery date addition
        var requiredDate = new Date();
        var numberOfDaysToAdd = 60;
        requiredDate.setDate(requiredDate.getDate() + numberOfDaysToAdd); 
        //var convertedDate  = requiredDate.format('d-M-Y');
        //var newDate = datepicker.formatDate('yy/mm/dd', requiredDate );
        //console.log(requiredDate);

        var month   = requiredDate.getMonth()+1;
        var day     = requiredDate.getDate();

        var output = requiredDate.getFullYear() + '/' + ((''+month).length<2 ? '0' : '') + month + '/' + ((''+day).length<2 ? '0' : '') + day;
        //

작업 예 클릭


1
이 게시물의 목적은 무엇입니까? 질문입니까, 대답입니까? 아니면 그냥 이상한 코멘트? 나중이라면 잘못된 위치에 게시하는 것입니다. ;-)
— Phill Healey

jsfiddle에서 데모 샘플을 만들었지 만 링크가 잘못되었습니다. 이제 오른쪽 URL을 가리 킵니다.
— Bikram Shrestha

당신의 '답변'은 말이 안되지만 사실은 기괴한 진술에 가깝습니다.
— Phill Healey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.