Làm cách nào để cập nhật (thêm vào) một href trong jquery?


79

Tôi có một danh sách các liên kết đến một api của google maps.

các liên kết đã có daddrtham số (đích) ở dạng tĩnh. Tôi đang sử dụng Vị trí địa lý để tìm vị trí của người dùng và tôi muốn thêm saddr(địa chỉ nguồn) vào các liên kết khi tôi nhận được dữ liệu.

vì vậy về cơ bản tôi sẽ cần thêm một cái gì đó như &saddr=50.1234567,-50.03452ở cuối tất cả các liên kết trỏ đến bản đồ google

Tất cả các liên kết có một lớp được gọi là directions-link

và từ trang này, tôi đã tìm ra cách thay đổi chúng:

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

Tuy nhiên, tôi chỉ muốn nối giá trị của mình vào cuối href mà không thay đổi giá trị của href.

Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


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

Để lặp lại với each()

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

Cảm ơn bạn, điều này sẽ hoạt động nếu có nhiều hơn 1 liên kết chỉ đường với tất cả các hrefs khác nhau? Cảm ơn bạn!
JD Isaacks

Nếu bạn đang thêm một thứ giống nhau cho mỗi trường hợp a.directions-linkthì có. Ngược lại, nếu bạn đang thêm một giá trị khác vào mỗi href, bạn sẽ cần sử dụng một each()để lặp lại và nối giá trị tương ứng.
Gabe

Tôi đang thêm giá trị giống nhau, nhưng mỗi href khác nhau để bắt đầu. vì vậy nếu cái đầu tiên là one.html và cái thứ hai là two.html thì cả hai đều sẽ là one.html & saddr ... bởi vì nó chỉ nắm bắt được href của liên kết a.directions-đầu tiên và sử dụng nó cho tất cả. Vì vậy, tôi nghĩ rằng tôi cần phải sử dụng mỗi (). Bạn có muốn đánh giá cao việc sử dụng nó không? Cảm ơn!!
JD Isaacks

Đúng, vòng lặp là những gì tôi cần, Cảm ơn! :)
JD Isaacks

41

jQuery 1.4 có một tính năng mới để thực hiện điều này và nó quy định. Tôi đã quên nó được gọi là gì, nhưng bạn sử dụng nó như thế này:

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

Điều đó cũng lặp lại trên tất cả các phần tử, vì vậy không cần $ .each


4
Điều đó không làm việc cho tôi nhưng .attr('href', function(i) { return $(this).attr('href') + '?q=testing'; })đã làm.
Elbert Alias

3
@elfbertf nó phù hợp với tôi. Bạn có đang sử dụng jquery> = 1.4 không? Và bạn có bao gồm biến href làm đối số thứ hai không?
zaius

$ ("# máy tính"). attr ("href", function (i, href) {return href + '? ves =' + 23 + '& v =' + 'sdfds';}); không làm việc
des1roer

Kiểm tra điều này tại jsfiddle.net/qz9eLr2z , nó hoạt động. api.jquery.com/attr/#attr-attributeName- Chức năng cho biết điều này đã được thêm vào jQuery 1.1.
Jacob C.

1
@JacobC. Việc cho phép attr nhận một hàm đã được thêm vào 1.1, nhưng chuyển giá trị hiện tại khi tham số thứ hai được thêm vào 1.4. Dưới đây là một ví dụ về nó không làm việc trong jquery 1.3 jsfiddle.net/qz9eLr2z/1
zaius


-1

Đây là những gì tôi đã cố gắng thực hiện để thêm tham số trong url chứa ký tự cụ thể trong 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;
        //

Nhấp chuột ví dụ làm việc


1
Mục đích của bài đăng này là gì? Đây là một câu hỏi hay một câu trả lời? Hay chỉ là một nhận xét kỳ quặc? Nếu là muộn hơn, bạn đang đăng không đúng chỗ. ;-)
Phill Healey

Tôi đã tạo mẫu demo trong jsfiddle, nhưng liên kết bị sai. Bây giờ nó trỏ đến url bên phải.
Bikram Shrestha

'Câu trả lời' của bạn không có ý nghĩa gì cả, nó thực sự là một câu nói kỳ quái hơn.
Phill Healey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.