Как обновить (добавить) href в jquery?

79

У меня есть список ссылок, которые ведут на API карт Google.

в ссылках уже есть daddrстатический параметр (назначение). Я использую геолокацию, чтобы найти положение пользователей, и хочу добавить 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 и использует его для всех. Поэтому я думаю, что мне нужно использовать each (). Не хотите ли вы рассказать об этом? Благодаря!!
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 07
$ ("# калькулятор"). attr ("href", function (i, href) {return href + '? ves =' + 23 + '& v =' + 'sdfds';}); не работает
des1roer 09
Протестировав это на jsfiddle.net/qz9eLr2z , он работает. api.jquery.com/attr/#attr-attributeName-function говорит, что это было добавлено в jQuery 1.1.
Джейкоб С.
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
Это не правильно. Он применяет href из первой совпавшей ".directions-link" ко всем ссылкам этого класса. jsfiddle.net/yuezewaw
Джейкоб С.
-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
Какова цель этого поста? Это вопрос или ответ? Или просто странный комментарий? Если позже, значит, вы публикуете не в том месте. ;-)
Фил Хили
Я создал демонстрационный образец в jsfiddle, но ссылка была неправильной. Теперь он указывает на правильный URL.
Бикрам Шреста
Ваш «ответ» не имеет смысла, это скорее странное утверждение.
Фил Хили