我想知道是否有一个jQuery函数可以检查URL中是否设置了变量。
类似于PHP中的isset()函数
由于
答案 0 :(得分:26)
jQuery没有获取URL参数的本机函数。
但你可以自己编写插件:
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
然后你可以做任何类似的事情:
if ($.getUrlVar("MyParam") != null) {
// Do anything...
}
答案 1 :(得分:2)
jQuery没有提供这样的方法。但你甚至不需要jQuery这样做:
(function() {
var params = null;
this.l = typeof Location !== "undefined" ? Location.prototype : window.location;
this.l.getParameter = function(name) {
return Array.prototype.slice.apply(this.getParameterValues(name))[0];
};
this.l.getParameterMap = function() {
if (params === null) {
params = {};
this.search.substr(1).split("&").map(function(param) {
if (param.length === 0) return;
var parts = param.split("=", 2).map(decodeURIComponent);
if (!params.hasOwnProperty(parts[0])) params[parts[0]] = [];
params[parts[0]].push(parts.length == 2 ? parts[1] : null);
});
}
return params;
};
this.l.getParameterNames = function() {
var map = this.getParameterMap(), names = [];
for (var name in map) {
if (map.hasOwnProperty(name)) names.push(name);
}
return names;
};
this.l.getParameterValues = function(name) {
return this.getParameterMap()[name];
};
})();
这会使用方法location
,getParameter
,getParameterMap
和getParameterNames
(类似于Java’s ServeletRequest)扩展getParameterValues
对象使用如下:
if (typeof location.getParameter("foo") !== "undefined") {
// foo parameter exists
}
getParameter
的返回值具有以下含义:
undefined
:给定参数不存在null
:给定参数没有指定值(例如foo
中的a=b&foo&c=d
)