Динамическое изменение (добавление строки к существующему URL) href с использованием jquery добавляет его дважды

#javascript #jquery #anchor #attr

#javascript #jquery #привязка #attr

Вопрос:

Я пытаюсь динамически добавлять строку в href с помощью jquery ‘attr’. Я не могу понять, почему приведенный ниже код, который я написал, добавляет строку дважды в существующий href. Пожалуйста, помогите. Я прочитал много статей, но, к сожалению, не помогло.

 var olduri = $('a.link').attr("href");
$('a.link').attr("href", olduri   'www.google.com');
  

HTML-код:

 <div>
     <a class="link" target="_blank" title="Welcome" href="https://example.com?redirect=www.test.comamp;amp;">
            Click</a>
</div>
  

Результат:
https://example.com?redirect=www.test.comamp;www.google.comwww.google.com

www.google.com приходит дважды. Пожалуйста, помогите мне это исправить.

Комментарии:

1. я протестировал приведенный выше код .. не нашел такого поведения. Проверьте это . Было бы хорошо, если бы вы могли включить демонстрационный код, чтобы понять реальную проблему.

2. вы нажимаете дважды

Ответ №1:

Я не совсем понимаю, почему вы хотите использовать в amp;amp; качестве единственного разделителя для них, но мое предложение для более чистого подхода — обновить search свойство, а не атрибут

 $('a.link').prop("search", function(i, curr){
    return curr   'www.google.com';
});
console.log($('a.link')[0].href)  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <a class="link" target="_blank" title="Welcome" href="https://example.com?redirect=www.test.comamp;amp;">
            Click</a>
</div>  

Ответ №2:

Ваш код просто отлично работает. Смотрите здесь . Также действительно помогло бы немного контекста. Планируете ли вы добавлять событие onclick url?

 $('.showUri').text($('a.link').attr("href"));

$('a.link').on('click', function(e){
    e.preventDefault();
  
  var oldUri = $(this).attr('href');
    $(this).attr('href', oldUri   'www.google.com');
  
  $('.showUri').text($('a.link').attr("href"));
});

<div>
     <a class="link" target="_blank" title="Welcome" href="https://example.com?redirect=www.test.comamp;amp;">
            Click</a>
</div>

<p class="showUri"></p>
  

Комментарии:

1. да, моя цель — добавить указанную строку в URL, когда пользователь нажимает на ссылку.

2. @Kiran Я только что обновил код. Также взгляните на ссылку, чтобы вы могли ее запустить