jquery实例 获取页面url且根据url模拟单击事件

发布时间:2020-06-24编辑:脚本学堂
本文介绍下,jquery获取页面url参数,并根据url来模拟单击事件的一个例子,有需要的朋友参考下吧。

此jquery实现,实现的功能为:
根据传过来的url参数,来进行相关操作,可以把这个功能写在控件中,实现隐藏或显示某些空间或触发一些事件的功能。

注意,要先引入jquery库文件,这里用到的是jquery-1.2.6.js。
引用:
<script src="js/jquery-1.2.6.js" type="text/javascript"></script>

实现代码:

/** 
 * jquery的插件
 * 获取页面url参数
**/  
new function(settings) {  
    // Various Settings  
    var $separator = settings.separator || '&';  
    var $spaces = settings.spaces === false ? false : true;  
    var $suffix = settings.suffix === false ? '' : '[]';  
    var $prefix = settings.prefix === false ? false : true;  
    var $hash = $prefix ? settings.hash === true ? "#" : "?" : "";  
    var $numbers = settings.numbers === false ? false : true;  
    jQuery.query = new function() {  
        var is = function(o, t) {  
            return o != undefined && o !== null && (!!t ? o.constructor == t : true);  
        };  
        var parse = function(path) {  
            var m, rx = //[([^[]*)/]/g, match = /^(/S+?)(/[/S*/])?$/.exec(path), base = match[1], tokens = [];  
            while (m = rx.exec(match[2])) tokens.push(m[1]);  
            return [base, tokens];  
        };  
        var set = function(target, tokens, value) {  
            var o, token = tokens.shift();  
            if (typeof target != 'object') target = null;  
            if (token === "") {  
                if (!target) target = [];  
                if (is(target, Array)) {  
                    target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));  
                } else if (is(target, Object)) {  
                    var i = 0;  
                    while (target[i++] != null);  
                    target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);  
                } else {  
                    target = [];  
                    target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));  
                }  
            } else if (token && token.match(/^/s*[0-9]+/s*$/)) {  
                var index = parseInt(token, 10);  
                if (!target) target = [];  
                target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);  
            } else if (token) {  
                var index = token.replace(/^/s*|/s*$/g, "");  
                if (!target) target = {};  
                if (is(target, Array)) {  
                    var temp = {};  
                    for (var i = 0; i < target.length; ++i) {  
                        temp[i] = target[i];  
                    }  
                    target = temp;  
                }  
                target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);  
            } else {  
                return value;  
            }  
            return target;  
        };  
        var queryObject = function(a) {  
            var self = this;  
            self.keys = {};  
            if (a.queryObject) {  
                jQuery.each(a.get(), function(key, val) {  
                    self.SET(key, val);  
                });  
            } else {  
                jQuery.each(arguments, function() {  
                    var q = "" + this;  
                    q = q.replace(/^[?#]/, ''); // remove any leading ? || #  
                    q = q.replace(/[;&]$/, ''); // remove any trailing & || ;  
                    if ($spaces) q = q.replace(/[+]/g, ' '); // replace +'s with spaces  
                    jQuery.each(q.split(/[&;]/), function() {  
                        var key = this.split('=')[0];  
                        var val = this.split('=')[1];  
                        if (!key) return;  
                        if ($numbers) {  
                            if (/^[+-]?[0-9]+/.[0-9]*$/.test(val)) // simple float regex  
                                val = parseFloat(val);  
                            else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex  
                                val = parseInt(val, 10);  
                        }  
                        val = (!val && val !== 0) ? true : val;  
                        if (val !== false && val !== true && typeof val != 'number')  
                            val = decodeURIComponent(val);  
                        self.SET(key, val);  
                    });  
                });  
            }  
            return self;  
        };  
        queryObject.prototype = {  
            queryObject: true,  
            has: function(key, type) {  
                var value = this.get(key);  
                return is(value, type);  
            },  
            GET: function(key) {  
                if (!is(key)) return this.keys;  
                var parsed = parse(key), base = parsed[0], tokens = parsed[1];  
                var target = this.keys[base];  
                while (target != null && tokens.length != 0) {  
                    target = target[tokens.shift()];  
                }  
                return typeof target == 'number' ? target : target || "";  
            },  
            get: function(key) {  
                var target = this.GET(key);  
                if (is(target, Object))  
                    return jQuery.extend(true, {}, target);  
                else if (is(target, Array))  
                    return target.slice(0);  
                return target;  
            },  
            SET: function(key, val) {  
                var value = !is(val) ? null : val;  
                var parsed = parse(key), base = parsed[0], tokens = parsed[1];  
                var target = this.keys[base];  
                this.keys[base] = set(target, tokens.slice(0), value);  
                return this;  
            },  
            set: function(key, val) {  
                return this.copy().SET(key, val);  
            },  
            REMOVE: function(key) {  
                return this.SET(key, null).COMPACT();  
            },  
            remove: function(key) {  
                return this.copy().REMOVE(key);  
            },  
            EMPTY: function() {  
                var self = this;  
                jQuery.each(self.keys, function(key, value) {  
                    delete self.keys[key];  
                });  
                return self;  
            },  
            load: function(url) {  
                var hash = url.replace(/^.*?[#](.+?)(?:/?.+)?$/, "$1");  
                var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");  
                return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash);  
            },  
            empty: function() {  
                return this.copy().EMPTY();  
            },  
            copy: function() {  
                return new queryObject(this);  
            },  
            COMPACT: function() {  
                function build(orig) {  
                    var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig;  
                    if (typeof orig == 'object') {  
                        function add(o, key, value) {  
                            if (is(o, Array))  
                                o.push(value);  
                            else  
                                o[key] = value;  
                        }  
                        jQuery.each(orig, function(key, value) {  
                            if (!is(value)) return true;  
                            add(obj, key, build(value));  
                        });  
                    }  
                    return obj;  
                }  
                this.keys = build(this.keys);  
                return this;  
            },  
            compact: function() {  
                return this.copy().COMPACT();  
            },  
            toString: function() {  
                var i = 0, queryString = [], chunks = [], self = this;  
                var addFields = function(arr, key, value) {  
                    if (!is(value) || value === false) return;  
                    var o = [key];  
                    if (value !== true) {  
                        o.push("=");  
                        o.push(encodeURIComponent(value));  
                    }  
                    arr.push(o.join(""));  
                };  
                var build = function(obj, base) {  
                    var newKey = function(key) {  
                        return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("");  
                    };  
                    jQuery.each(obj, function(key, value) {  
                        if (typeof value == 'object')  
                            build(value, newKey(key));  
                        else  
                            addFields(chunks, newKey(key), value);  
                    });  
                };  
                build(this.keys);  
                if (chunks.length > 0) queryString.push($hash);  
                queryString.push(chunks.join($separator));  
                return queryString.join("");  
            }  
        };  
        return new queryObject(location.search, location.hash);  
    };  
} (jQuery.query || {}); // Pass in jQuery.query as settings object  

<script>
$(document).ready(function() {
        if ($.query.get("index") != "") {//获取url参数index
            $("#main_search ul li a").eq($.query.get("index")).click();//根据index模拟标签单击事件
        }
        //alert($("#main_search ul li a").eq(0).html());

    })
</script>