使用JQuery从href属性字符串中提取值

3
我希望使用JQuery从href属性字符串中提取值。
$(this).attr("href")

将会给我

?sortdir=ASC&sort=Vendor_Name

我需要将这些值解析为数组。
myArray['sort']

myArray['sortdir']

有什么想法吗? 谢谢!

顺便说一下,在 Stack Overflow 的其他地方,我看到了以下类似的想法可以与查询字符串一起使用。 目前我还无法为我的需求进行调整。

var urlParams = {};
    (function () {
        var match,
    pl = /\+/g,  // Regex for replacing addition symbol with a space
    search = /([^&=]+)=?([^&]*)/g,
    decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
    query = window.location.search.substring(1);

        while (match = search.exec(query))
            urlParams[decode(match[1])] = decode(match[2]);
    })();

你尝试过什么?(http://mattgemmell.com/2008/12/08/what-have-you-tried/) - James Hill
请查看此处:http://stackoverflow.com/questions/8695147/how-to-change-css-attribute-value-based-on-querystring-using-jquery#answer-8695175 - Joseph Silber
4个回答

1

请尝试以下方法:

var href = $(this).attr("href")
href = href.replace('?', "").split('&');

var myArr = {};
$.each(href, function(i, v){
   var s = v.split('=');
   myArr[s[0]] = s[1];    
});

演示


@Pinch,你检查过那个fiddle了吗?它是一个对象,而且不是空的。 - Ram
你的方法也可以,但在我的声望提高之前我无法给你一个+1。请其他人给他一个+1! - Pinch

0

也许有更好的解决方案,但为了快速起见,我应该做类似这样的事情。

var url = $(this).attr("href");
url = url.replace("?sortdir=", "");
url = url.replace("sort=", "");
myArray['sort'] = url.split("&")[1]; // Or use a temporary tab for your split
myArray['sortdir'] = url.split("&")[0];

这个解决方案取决于你的URL是否仍然像这样?sortdir=ASC&sort=Vendor_Name


0

试试这个

function getURLParameter(name, string) {
    return decodeURI(
        (RegExp(name + '=' + '(.+?)(&|$)').exec(string)||[,null])[1]
    );
}

var string = $(this).attr("href");

alert(getURLParameter("sort",string));

这里有个演示 http://jsfiddle.net/jbHa6/,你可以更改变量字符串的值并进行调试。

编辑

删除了第二个例子,因为那段代码不太好,也没有实际用途。


非常感谢,第一种方法运行得很好。如果这是一个赞美的话。 - Pinch

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接