【问题标题】:Dynamically changing (appending string to existing url) href using jquery is appending it twice使用 jquery 动态更改(将字符串附加到现有 url)href 将其附加两次
【发布时间】:2021-01-07 04:19:41
【问题描述】:

我正在尝试使用 jquery 'attr' 将字符串动态附加到 href。我无法理解为什么我编写的以下代码在现有的 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.com&amp;">
            Click</a>
</div>

结果是: https://example.com?redirect=www.test.com&www.google.comwww.google.com

www.google.com 来了两次。请帮我解决它。

【问题讨论】:

  • 我测试了上面的代码..没有发现任何这样的行为。检查this。如果您可以包含演示代码以了解实际问题,那就太好了。
  • 你点击了两次

标签: javascript jquery anchor attr


【解决方案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.com&amp;">
            Click</a>
</div>

【讨论】:

    【解决方案2】:

    您的代码运行良好。见here。还有一点上下文真的会有所帮助。您是否打算附加 url onclick 事件?

    $('.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.com&amp;">
                Click</a>
    </div>
    
    <p class="showUri"></p>
    

    【讨论】:

    • 是的,我的目标是在用户点击链接时将给定的字符串附加到 url。
    • @Kiran 我刚刚更新了代码。也请查看链接,以便您可以运行它
    猜你喜欢
    • 2014-04-25
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多