问题描述
我正在尝试使用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&">
Click</a>
</div>
结果是: https://example.com?redirect=www.test.com&www.google.comwww.google.com
www.google.com要来两次。请帮我修复它。
解决方法
我不太明白为什么您要&
作为它们的唯一分隔符,但我建议采用一种更简洁的方法是更新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&">
Click</a>
</div>
,
您的代码运行正常。参见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&">
Click</a>
</div>
<p class="showUri"></p>