URL的最后一部分

如何获取url的最后一部分? 我有下面的脚本显示了点击的锚点标签的完整url:

$(".tag_name_goes_here").live('click', function(event) { event.preventDefault(); alert($(this).attr("href")); }); 

如果url是

 http://mywebsite/folder/file 

我怎么才能让它显示在警告框中的URL的“文件”部分?

你也可以使用lastIndexOf()函数来定位URL中最后一个/字符,然后substr()函数返回从该位置开始的子string:

 window.alert(this.href.substr(this.href.lastIndexOf('/') + 1)); 

这样,您将避免创build一个包含所有URL段的数组,如split()所做的那样。

 var parts = 'http://mywebsite/folder/file'.split('/'); var lastSegment = parts.pop() || parts.pop(); // handle potential trailing slash console.log(lastSegment); 

正则expression式的另一个解决scheme。

 var href = location.href; console.log(href.match(/([^\/]*)\/*$/)[1]); 
 window.location.pathname.split("/").pop() 

Javascript具有与string对象关联的function,可以帮助您:

 var url = "http://mywebsite/folder/file"; var array = url.split('/'); var lastsegment = array[array.length-1]; 
 var urlChunks = 'mywebsite/folder/file'.split('/'); alert(urlChunks[urlChunks.length - 1]); 

或者你可以使用正则expression式:

 alert(href.replace(/.*\//, '')); 

我知道,为时已晚,但对于其他人:我强烈build议使用PURL jquery插件 。 PURL的动机是URL也可以被'#'分割(例如:angular.js链接),即url可能看起来像

  http://test.com/#/about/us/ 

要么

  http://test.com/#sky=blue&grass=green 

通过PURL,您可以轻松决定(细分/细分)您想要获得的细分。

对于“经典”最后一段,你可以写:

  var url = $.url('http://test.com/dir/index.html?key=value'); var lastSegment = url.segment().pop(); // index.html 

也,

 var url = $(this).attr("href"); var part = url.substring(url.lastIndexOf('/') + 1); 

build立在Frédéric的回答只使用javascript:

 var url = document.URL window.alert(url.substr(url.lastIndexOf('/') + 1)); 

如果您不担心使用拆分生成额外的元素,则筛选器可以处理您提到的尾部斜杠(假设您有浏览器对筛选器的支持)的问题。

 url.split('/').filter(function (s) { return !!s }).pop() 
 var pathname = window.location.pathname; // Returns path only var url = window.location.href; // Returns full URL 

从这个答案复制

 // Store original location in loc like: http://test.com/one/ (ending slash) var loc = location.href; // If the last char is a slash trim it, otherwise return the original loc loc = loc.lastIndexOf('/') == (loc.length -1) ? loc.substr(0,loc.length-1) : loc.substr(0,loc.lastIndexOf('/')); var targetValue = loc.substr(loc.lastIndexOf('/') + 1); 

targetValue = 1

如果您的url如下所示:

http://test.com/one/

要么

http://test.com/one

要么

http://test.com/one/index.htm

然后,loc结束如下所示: http : //test.com/one

现在,由于您需要最后一个项目,请运行下一步以加载您最初想要的值(targetValue)。

 var targetValue = loc.substr(loc.lastIndexOf('/') + 1); 
 window.alert(this.pathname.substr(this.pathname.lastIndexOf('/') + 1)); 

使用本地pathname属性是因为它最简单,并且已经被浏览器parsing和parsing。 $(this).attr("href")可以返回像../..这样的值不会给你正确的结果。

如果你需要保持searchhash (例如foo?bar#bazhttp://quux.com/path/to/foo?bar#baz )使用这个:

 window.alert(this.pathname.substr(this.pathname.lastIndexOf('/') + 1) + this.search + this.hash); 

要获取当前窗口的最后一部分:

window.location.href.substr(window.location.href.lastIndexOf('/') +1)