Javascript jQuery:如何从链接中删除查询字符串?

Javascript jQuery:如何从链接中删除查询字符串?,javascript,jquery,query-string,Javascript,Jquery,Query String,如何从链接的url中删除查询字符串?比如我有 <a href="http://example.com/somepath/anotherpath?title=dog">The Link</a> 如何使用javascript/jquery从url中删除?title=dog var url=$('a').attr('href').split('?')[0]; 在“?”上拆分并获取第一项。如果要更改页面上所有链接的url,则可以使用以下代码: $('a').each(fu

如何从链接的url中删除查询字符串?比如我有

<a href="http://example.com/somepath/anotherpath?title=dog">The Link</a>

如何使用javascript/jquery从url中删除
?title=dog

var url=$('a').attr('href').split('?')[0];
在“?”上拆分并获取第一项。如果要更改页面上所有链接的url,则可以使用以下代码:

$('a').each(function(i,el){ 
    $(el).attr('href', $(el).attr('href').split('?')[0]);
});

要从定位标记中删除查询字符串,请执行以下操作:

var anchor = $('#yourAnchor');
var href = anchor.attr('href');

if (href.indexOf('?') !== -1) {
   anchor.attr('href', href.split('?')[0]);
}

只需更改对象的名称,即可从链接中删除查询字符串

演示:

或者,如果需要针对多个元素:

$("a.someclass").each(function() {
 this.search = "";   
});
演示:


如果您希望解析任意URL以删除查询字符串,则可以反向执行中介绍的技巧。例如:

function remove_qs(url) {
    var a = document.createElement('a'); // dummy element
    a.href = url;   // set full url
    a.search = "";  // blank out query string
    return a.href;
}
这应该非常健壮,因为它使用对象来执行所有解析

用法示例:



还有一种方法可以将搜索替换为空白

String(document.location.href).replace("&title=dog", "");

您可以在页面加载时从url拆分查询字符串,如下所示:-

$(function(){
  if(Modernizr.history)
  {
    history.replaceState({},"",location.href.split("?")[0]);
  }
});

这个代码对我有用:

var url = "www.foo.com/test?name=kevin&gender=Male&id=1234";

var res = url.replace("&gender=Male", "");

window.location.href =res;

通过javascript拆分url中的特定字符串查询参数,这将为您提供基本url,而不是查询字符串-您的意思是
[1]
,但如果
href
没有
字符,您可能需要添加一些防弹措施。@jbabey他们想删除查询字符串,因此返回基本url是正确的。抱歉,url中也会有一个路径。我已经更新了我的问题以反映这一点。嗯,我之所以会出现这个错误是因为某种原因。。未捕获类型错误:无法调用未定义(匿名函数)(匿名函数)的方法“indexOf”。我的代码中没有indexOf,您的意思是响应jbabey的回答吗?我的函数工作:检查
href
属性是否包含
字符是不必要的-
。如果分隔符不存在,split()
将只返回一个包含单个元素(整个字符串)的数组。@AnthonyGrist,直到其他开发人员决定复制此代码并在其他地方使用它,引入一个bug。如果有的话,应该有一个关于此行为的注释,而不是if语句。如果他们这样做了,那就是他们的问题,在我看来,在代码中包含不必要的检查是一个非常糟糕的原因。好的,这看起来非常接近,但是如果url中有一个路径(如我更新的示例中所示),我如何让它工作呢?哦。。是的。现在我的问题是,我的页面上有一堆链接,我需要从中删除查询字符串。您的第一个示例中的代码只在第一个链接上工作。好了!那就行了:)太谢谢你了!
var url = "www.foo.com/test?name=kevin&gender=Male&id=1234";

var res = url.replace("&gender=Male", "");

window.location.href =res;