• 自己写的常用jquery扩展函数


    ;(function($) {

    $.request = {};
    $.validate = {};
    $.common = {};

    $.extend(jQuery.request, {
     queryString: function (name) {
            var url = document.URL;
            var arr = url.split('?');
            if (arr.length < 2)    {
                return '';
            }
            url = arr[1];

            //去掉最后一个#字符
            if (url.lastIndexOf('#') == (url.length - 1))
                url = url.substring(0, url.length - 1);

            var arrQueryStringPair = url.split('&');
            if (arrQueryStringPair.length == 0)
                return '';

            //未采用split方法,因为如果形如backUrl=aHR0cDNweD9zdGF0dXM9Mw==
            //的参数采用split方法不能正确获取到等号后面的值
            for (var i = 0; i < arrQueryStringPair.length; ++i) {
                var startIndex = arrQueryStringPair[i].indexOf('=') + 1;
                var sName = arrQueryStringPair[i].substr(0, startIndex - 1);
                var result = arrQueryStringPair[i].substr(startIndex, arrQueryStringPair[i].length - startIndex);
                if (sName.toLowerCase() == name.toLowerCase()) {
                    return result;
                }
            }

            return '';
        },
       
       
        /// 调用范例
        /// var params = [];
        /// var o = new Object();
        /// o.name = '_';
        /// o.value = '_';
        /// params.push(o);
           
        /// o = new Object();
        /// o.name = 'sTatus';
        /// o.value = '2';
        /// params.push(o);
           
        /// var url = $.request.replaceQueryString(params);
        ///
        replaceQueryString : function (arrParams) {
            var url = document.URL;
            var destUrl = null;
         var arr = url.split('?');
         if (arr.length < 2) {
          destUrl = arr[0] + '?';
          for (var i = 0; i < arrParams.length; ++i) {
              destUrl += '&' + arrParams[i].name + '=' + arrParams[i].value;
          }
          return destUrl;
         }
         
         if (arr[1].indexOf('&') == 0)
             arr[1] = arr[1].substring(1, arr[1].length);
         url = arr[1];
         
         destUrl = arr[0];

            if (url != '') {
             //去掉最后一个#字符
             if (url.lastIndexOf('#') == (url.length - 1))
              url = url.substring(0, url.length - 1);

             var arrQueryStringPair = url.split('&');
             if (arrQueryStringPair.length == 0)
              return destUrl;
              
                destUrl += '?';

                if (arrQueryStringPair.length > 0 && (arrQueryStringPair[0] != '')) {
                    for (var j = 0; j < arrQueryStringPair.length; ++j) {
                        var arrTemp = arrQueryStringPair[j].split('=');
                        if (arrTemp.length == 1) continue;
                        if (arrTemp[0] == '') continue;

                        var flag = false;
                        for (var k = 0; k < arrParams.length; ++k) {
                            if (arrParams[k].name.toLowerCase() == arrTemp[0].toLowerCase()) {
                                destUrl += '&' + arrParams[k].name + '=' + arrParams[k].value;
                                arrParams[k].added = true;
                                flag = true;
                                break;
                            }
                        }
                    
                        if (flag == false)
                            destUrl += '&' + arrTemp[0] + '=' + arrTemp[1];
                    }
                   
                    for (var k = 0; k < arrParams.length; ++k) {
                        if (!arrParams[k].added) {
                            destUrl += '&' + arrParams[k].name + '=' + arrParams[k].value;
                            arrParams[k].added = true;
                        }
                    }
                }
         } else {
             destUrl += '?';
             for (var k = 0; k < arrParams.length; ++k) {
                 if (k != 0)
                     destUrl += '&';
                 destUrl += arrParams[k].name + '=' + arrParams[k].value;
             }
         }
         
         return destUrl;
        }
    });

    $.extend(jQuery.validate, {
     isEmail : function(email) {
         return /^.+@.+\..{2,3}$/g.test(email);
     },
     isInt: function(str) {
         return /^\d+$/img.test(str);
     }
    });

    $.extend(jQuery.common, {
       
        //将value从逗号分隔的字符串中删除
        //比如从a,b,c,d 将c删除,得到a,b,d
        removeFromCommaJoinedText : function (value, container) {
            if (value.length == 0)
                return '';
                   
            //去除前后逗号   
            value = value.replace(/^,/, '').replace(/,$/, '');
            container = container.replace(/^,/, '').replace(/,$/, '');
                   
            if (container == value)
            {
                return '';
            }
                   
            var sArray = container.split(',');
            for (var i = sArray.length - 1; i >= 0; --i)
            {
                if (sArray[i] == value)
                    sArray[i] = undefined;
            }
                   
            var result = sArray.join(',');
            //因为undefined会连接成,,所以要将,,换成,           
            result = result.replace(/,,/,',');
            result = result.replace(/^,/, '').replace(/,$/, '');
                   
            return result;
        }, 
       
       
        /*判断两个对象是否相等的js函数
        如果两个对象属性在初始化时出现的顺序不一样 但数目及值一样,最终比较结果也是true
        支持每个属性又是其他类型,如对象、数组、数字、字符串
       
        var a = {Name:"YuanXP",Id:9,Go:{a:'1',b:'2'}};
        var b = {Id:9,Name:"YuanXP",'Go':{a:'1',b:'2'}};

        var r = $.common.equal(a, b);
        alert(r);
     
        */
        equal : function (objA, objB) {
            if (typeof arguments[0] != typeof arguments[1])
                return false;

            //数组
            if (arguments[0] instanceof Array)
            {
                if (arguments[0].length != arguments[1].length)
                    return false;
               
                var allElementsEqual = true;
                for (var i = 0; i < arguments[0].length; ++i)
                {
                    if (typeof arguments[0][i] != typeof arguments[1][i])
                        return false;

                    if (typeof arguments[0][i] == 'number' && typeof arguments[1][i] == 'number')
                        allElementsEqual = (arguments[0][i] == arguments[1][i]);
                    else
                        allElementsEqual = arguments.callee(arguments[0][i], arguments[1][i]);            //递归判断对象是否相等               
                }
                return allElementsEqual;
            }
           
            //对象
            if (arguments[0] instanceof Object && arguments[1] instanceof Object)
            {
                var result = true;
                var attributeLengthA = 0, attributeLengthB = 0;
                for (var o in arguments[0])
                {
                    //判断两个对象的同名属性是否相同(数字或字符串)
                    if (typeof arguments[0][o] == 'number' || typeof arguments[0][o] == 'string')
                        result = eval("arguments[0]['" + o + "'] == arguments[1]['" + o + "']");
                    else {
                        //如果对象的属性也是对象,则递归判断两个对象的同名属性
                        //if (!arguments.callee(arguments[0][o], arguments[1][o]))
                        if (!arguments.callee(eval("arguments[0]['" + o + "']"), eval("arguments[1]['" + o + "']")))
                        {
                            result = false;
                            return result;
                        }
                    }
                    ++attributeLengthA;
                }
               
                for (var o in arguments[1]) {
                    ++attributeLengthB;
                }
               
                //如果两个对象的属性数目不等,则两个对象也不等
                if (attributeLengthA != attributeLengthB)
                    result = false;
                return result;
            }
            return arguments[0] == arguments[1];

        }
    });

    })(jQuery);


    //合并两个数组的元素
    Array.prototype.union = function(arrayB) {
        for (var i = 0; i < this.length; ++i) {
            var inArrID = false;
            for (var j = 0; j < arrayB.length; ++j) {
                if (arrayB[j] == this[i]) {
                    inArrID = true;
                    break;
                }
            }
           
            if (!inArrID) {
                arrayB.push(this[i]);
            }
        }
       
        var result = arrayB.join(',');
        result = result.replace(/^,/, '').replace(/,$/, '');
        return result;
    }

    Array.prototype.removeIndex = function(i)
     {
       if (isNaN(i) || i > this.length)
          return false;
      this.splice(i,1);
     }
     
     Array.prototype.remove = function(key)
     {
      for (var i = 0; i < this.length; ++i)
      {
         if (this[i] == key)
             this.splice(i, 1);
      }
     }

     
    /*
        b = ['1','2','3','4','5'];
        alert("elements: "+b+"nLength: "+b.length);
        b.remove('4');       //删除值为'4'的元素
        b.removeIndex(3) //删除下标为1的元素
        alert("elements: "+b+"nLength: "+b.length);
    */

    //判断数组是否已包含了某个元素的js函数
    Array.prototype.contains = function(obj) {
        var i = this.length;
        while (i--) {
            if (this[i] === obj) {
                return true;
            }
        }
        return false;
    }

  • 相关阅读:
    安全和加密
    awk
    CentOS7练习
    CentOS7系统引导顺序以及排障
    网络配置
    RAID阵列搭建
    LVM逻辑卷
    java-web——第九课 request
    java-web——第八课 JSTL的显示格式
    java-web——第七课 JSTL
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/1770103.html
Copyright © 2020-2023  润新知