Як оновити (додати) href у jquery?


79

У мене є список посилань, які всі переходять на API Google Maps.

посилання вже мають параметр daddr(призначення) як статичний. Я використовую Geo-Location для пошуку позиції користувачів, і я хочу додати saddr(вихідну адресу) до посилань, як тільки отримаю дані.

тому в основному мені потрібно буде додати щось на зразок &saddr=50.1234567,-50.03452кінця всіх посилань, що вказують на карти Google

Усі посилання мають клас під назвою 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');
});

Дякую, чи це спрацює, якщо існує більше 1 напрямків-посилань з різними hrefs? Дякую!
JD Isaacks

Якщо ви додаєте одне і те ж до кожного екземпляра, a.directions-linkтоді так. В іншому випадку, якщо ви додаєте різне значення до кожного href, вам потрібно буде використовувати each()ітерацію та додавання відповідного значення.
Гейб,

Я додаю одне і те ж значення, але кожен href для початку різний. отже, якщо перший - one.html, а другий - two.html, вони в кінцевому підсумку становлять one.html & saddr ... тому що він захоплює лише href першого a.directions-link і використовує це для всіх. Тому я думаю, що мені потрібно використовувати кожну (). Чи хочете ви обговорити питання використання? Дякую!!
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'; })і було.
Елберт Аліас,

3
@elfbertf це працює для мене. Ви використовуєте jquery> = 1.4? І ви включили змінну href як другий аргумент?
zaius

$ ("# калькулятор"). 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


-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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.