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如下所示:
要么
要么
然后,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")
可以返回像../..
这样的值不会给你正确的结果。
如果你需要保持search
和hash
(例如foo?bar#baz
从http://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)