• jQuery技巧


    1、禁用页面的右键菜单

    $(function () {
            $(document).bind("contextmenu",function(e){
                return false;
            })
        });
    View Code

    2、新窗口打开页面

        $(function () {
    //        例子1:href="http://"的超链接将会在新窗口打开链接
    //        $("a[href^='http://']").attr("target","_blank");
    //        例子2:rel="external"的超链接将会在新窗口打开链接
            $("a[rel$='external']").click(function(){
                this.target="_blank";
            });
    //        use
    //        <a href="http://www.cssrain.cn" rel="external">open link</a>
        });
    View Code

    3、判断浏览器类型

    $(document).ready(function() {  
        // Firefox 2 and above  
        if ($.browser.mozilla && $.browser.version >= "1.8" ){  
            // do something  
        }    
        // Safari  
        if( $.browser.safari ){  
            // do something  
        }    
        // Chrome  
        if( $.browser.chrome){  
            // do something  
        }    
        // Opera  
        if( $.browser.opera){  
            // do something  
        }    
        // IE6 and below  
        if ($.browser.msie && $.browser.version <= 6 ){  
            alert("ie6")
        }    
        // anything above IE6  
        if ($.browser.msie && $.browser.version > 6){  
            alert("ie6以上")
        }  
    });
    View Code

    需要注意的是,在jquery1.3版本之后,官方推荐使用$.support来代替$.browser这种检测方式。

    4、输入框文字获取和失去焦点

    $(document).ready(function() {  
        $("input.text1").val("Enter your search text here.");  
        textFill( $('input.text1') );  
    });  
    function textFill(input){ //input focus text function  
        var originalvalue = input.val();  
        input.focus( function(){  
            if( $.trim(input.val()) == originalvalue ){
                input.val(''); 
            }  
        }).blur( function(){  
            if( $.trim(input.val()) == '' ){ 
                input.val(originalvalue); 
            }  
        });  
    }
    View Code

    5、返回头部滑动动画

    jQuery.fn.scrollTo = function(speed) {
        var targetOffset = $(this).offset().top;
        $('html,body').stop().animate({scrollTop: targetOffset}, speed);
        return this;
    }; 
    // use
    $("#goheader").click(function(){
        $("body").scrollTo(500);
        return false;
    });
    View Code

    6、获取鼠标位置

    $(document).ready(function () { 
        $(document).mousemove(function(e){  
            $('#XY').html("X : " + e.pageX + " | Y : " + e.pageY);  
        });
    });
    View Code

    7、判断元素是否存在

    $(document).ready(function() {  
        if ($('#XY').length){  
           alert('元素存在!')
        }else{
           alert('元素不存在!')
        }
    });
    View Code

    8、点击div也可以跳转

    $(document).ready(function() {    
        $("div").click(function(){  
            window.location=$(this).find("a").attr("href"); 
            return false;  
        }); 
    });
    View Code

    9、根据浏览器大小添加不同样式

    $(document).ready(function() {  
        function checkWindowSize() {  
            if ( $(window).width() > 900 ) {  
                $('body').addClass('large');  
            }else{  
                $('body').removeClass('large');  
            }  
        }  
        $(window).resize(checkWindowSize);  
    });
    View Code

    10、设置div在屏幕中央

    $(document).ready(function() {  
       jQuery.fn.center = function () {  
          this.css("position","absolute");  
          this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");  
          this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");  
          return this;  
        }  
        //use
        $("#XY").center();  
    });
    View Code

    11、创建自己的选择器

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/zgy.css">
        <style>
            #XY1 {
                width: 560px;
                height: 300px;
                background: #aaa;
            }
            #XY2 {
                width: 360px;
                height: 300px;
                background: #aaa;
            }
        </style>
    </head>
    <body>
    <div class="fz">
        <div id="XY1" class="box"></div>
        <div id="XY2" class="box"></div>
    </div>
    </body>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $.extend($.expr[':'], {
                moreThen500px: function (a) {
                    return $(a).width() > 500;
                }
            });
            $('.box:moreThen500px').click(function () {
                alert();
            });
        });
    </script>
    </html>
    View Code

    12、关闭所有动画效果

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/zgy.css">
        <style>
            #XY {
                width: 40px;
                height: 100px;
                background: #aaa;
            }
        </style>
    </head>
    <body>
    <div class="fz">
        <button id="XY1" class="box">开始动画</button>
        <button id="XY2" class="box">关闭动画</button>
        <button id="XY3" class="box">开启动画</button>
        <div id="XY" class="box"></div>
    </div>
    </body>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $("#XY1").click(function () {
                animateIt();
            });
            $("#XY2").click(function () {
                jQuery.fx.off = true;
            });
            $("#XY3").click(function () {
                jQuery.fx.off = false;
            });
        });
        function animateIt() {
            $("#XY").slideToggle("slow");
        }
    </script>
    </html>
    View Code

    13、检测鼠标右键和左键

    $(document).ready(function() {  
        $("#XY").mousedown(function(e){
            alert(e.which)  // 1 = 鼠标左键 ; 2 = 鼠标中键; 3 = 鼠标右键
        })
    });
    View Code

    14、回车提交表单

    $(document).ready(function() {  
         $("input").keyup(function(e){
                if(e.which=="13"){
                   alert("回车提交!")
                }
            })
    });
    View Code

    15、设置全局ajax参数

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/zgy.css">
        <style>
            #load {
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="fz">
        <div id="load">加载中...</div>
        <input type="button" id="send1" value="ajax"/>
    
        <div id="resText1"></div>
    </div>
    </body>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $('#send1').click(function () {
                $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=car&tagmode=any&format=json&jsoncallback=?", function (data) {
                            $("#resText1").empty();
                            $.each(data.items, function (i, item) {
                                $("<img/> ").attr("src", item.media.m).appendTo("#resText1");
                                if (i == 3) {
                                    return false;
                                }
                            });
                        }
                );
            });
    
            $.ajaxPrefilter(function (options) {
                options.global = true;
            });
            $("#load").ajaxStart(function () {
                showLoading(); //显示loading
                disableButtons(); //禁用按钮
            });
            $("#load").ajaxComplete(function () {
                hideLoading(); //隐藏loading
                enableButtons(); //启用按钮
            });
    
        });
    
        function showLoading() {
            $("#load").show();
        }
        function hideLoading() {
            $("#load").hide();
        }
        function disableButtons() {
            $("#send1").attr("disabled", "disabled");
        }
        function enableButtons() {
            $("#send1").removeAttr("disabled");
        }
    
    </script>
    </html>
    View Code

    16、获取选中的下拉框

        function getObj() {
    //        var $obj = $('#someElement').find('option:selected');
    //        或者
            var $obj=$("#someElement option:selected");
            alert($obj.val());
        }
    View Code

    18、使用siblings()来选择同辈元素

    $('#nav li').click(function(){
        $(this).addClass('active')
               .siblings().removeClass('active');
    });
    View Code

    19、个性化链接

    $(document).ready(function(){
        $("a[href$='pdf']").addClass("pdf");
        $("a[href$='zip']").addClass("zip");
        $("a[href$='psd']").addClass("psd");
    });
    View Code

    20、在一段时间之后自动隐藏或关闭元素

    $(document).ready(function(){  
        $("button").click(function() {
            $("div").slideUp(300).delay(3000).fadeIn(400);
        });
        /*
        //这是1.3.2中我们使用setTimeout来实现的方式
        setTimeout(function() {
            $('div').fadeIn(400)
        }, 3000);
        */
        //而在1.4之后的版本可以使用delay()这一功能来实现的方式
        //$("div").slideUp(300).delay(3000).fadeIn(400);
    });
    View Code

    21、使用Firefox和Firebug来记录事件日志

    // 在firebug上查看
    jQuery.log = jQuery.fn.log = function (msg) {
          if (console){
             console.log("%s: %o", msg, this);
          }
          return this;
    };
    $(document).ready(function(){  
        $("button").click(function() {
            $('#someDiv').hide().log('div被隐藏');
        });
    });
    View Code

    22、为任何与选择器想匹配的元素绑定事件

        $(document).ready(function(){
            /*
             // 为table里面的td元素绑定click事件,不管td元素是一直存在还是动态创建的
             // jQuery 1.4.2之前使用的方式
             $("table").each(function(){ 
               $("td", this).live("click", function(){ 
                 $(this).toggleClass("hover"); 
               }); 
             }); 
             // jQuery 1.4.2 使用的方式
             $("table").delegate("td", "click", function(){ 
               $(this).toggleClass("hover"); 
             });
             */
            // jQuery 1.7.1使用的方式
            $("table").on("click","td",function(){
                 $(this).toggleClass("hover");
            });
        });
    View Code

    23、使用css钩子

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/zgy.css">
        <style>
            .box {
                width: 200px;
                height: 200px;
                margin: 10px;
                background: #333;
            }
        </style>
    </head>
    <body>
    <div class="fz">
        <div id="rect" class="box"></div>
    </div>
    </body>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script>
        /*! Copyright (c) 2010 Burin Asavesna (http://helloburin.com)
         * Licensed under the MIT License (LICENSE.txt).
         */
        (function ($) {
            // borderRadius get hooks
            var div = document.createElement('div'),
                    divStyle = div.style,
                    support = $.support,
                    dirs = "TopLeft TopRight BottomRight BottomLeft".split(" ");
    
            // WebKit supports "borderRadius" as well as "WebKitBorderRadius", weird
            support.borderRadius =
                            divStyle.MozBorderRadius === '' ? 'MozBorderRadius' :
                    (divStyle.MsBorderRadius === '' ? 'MsBorderRadius' :
                            (divStyle.WebkitBorderRadius === '' ? 'WebkitBorderRadius' :
                                    (divStyle.OBorderRadius === '' ? 'OBorderRadius' :
                                            (divStyle.borderRadius === '' ? 'BorderRadius' :
                                                    false))));
    
            div = null;
            function borderCornerRadius(direction, prefix) {
                prefix = prefix === undefined || prefix === '' ? 'border' : prefix + 'Border';
                if (support.borderRadius && support.borderRadius == "MozBorderRadius") {
                    // e.g. MozBorderRadiusTopleft
                    return prefix + "Radius" + direction.charAt(0).toUpperCase() + direction.substr(1).toLowerCase();
                } else {
                    // e.g. WebKitBorderTopLeftRadius, borderTopLeftRadius, etc
                    return prefix + direction + "Radius";
                }
            }
            if (support.borderRadius && support.borderRadius !== "BorderRadius") {
                var vendor_prefix = support.borderRadius.replace('BorderRadius', '');
                $.cssHooks.borderRadius = {
                    get: function (elem, computed, extra) {
                        // return each of the directions, topleft, topright, bottomright, bottomleft
                        return $.map(dirs, function (dir) {
                            return $.css(elem, borderCornerRadius(dir, vendor_prefix));
                        }).join(" ");
                    },
                    set: function (elem, value) {
                        // takes in a single value or shorthand (just letting the browser handle this)
                        // e.g. 5px to set all, or 5px 0 0 5px to set left corners
                        elem.style[ borderCornerRadius('', vendor_prefix) ] = value;
                    }
                };
                $.each(dirs, function (i, dir) {
                    $.cssHooks[ "borderRadius" + dir ] = {
                        get: function (elem, computed, extra) {
                            return $.css(elem, borderCornerRadius(dir, vendor_prefix));
                        },
                        set: function (elem, value) {
                            elem.style[ borderCornerRadius(dir, vendor_prefix) ] = value;
                        }
                    };
                });
    
            }
        })(jQuery);
        //use
        $('#rect').css('borderRadius', 10);
    </script>
    </html>
    View Code

    24、$.proxy()的使用

    $('#panel').fadeIn(function(){
        // Using $.proxy :
        $('#panel button').click($.proxy(function(){
            // this 指向 #panel
            $(this).fadeOut();
        },this));
    });
    View Code

    25、限制text-area域中的字符的个数

    jQuery.fn.maxLength = function(max){
        this.each(function(){
            var type = this.tagName.toLowerCase();
            var inputType = this.type? this.type.toLowerCase() : null;
            if(type == "input" && inputType == "text" || inputType == "password"){
                //应用标准的maxLength
                this.maxLength = max;
            }else if(type == "textarea"){
                this.onkeypress = function(e){
                    var ob = e || event;
                    var keyCode = ob.keyCode;
                    var hasSelection = document.selection? document.selection.createRange().text.length > 0 : this.selectionStart != this.selectionEnd;
                    return !(this.value.length >= max && (keyCode > 50 || keyCode == 32 || keyCode == 0 || keyCode == 13) && !ob.ctrlKey && !ob.altKey && !hasSelection);
                };
                this.onkeyup = function(){
                    if(this.value.length > max){
                        this.value = this.value.substring(0,max);
                    }
                };
            }
        });
    };
    //use
    $('#mytextarea').maxLength(10);
    View Code

    26、本地存储

    本地存储是HTML5提供的特性之一。它提供了非常简单的API接口,便于添加你的数据到localStorage全局属性中,代码如下:

    localStorage.someData="this is going to be saved";

    对于老的浏览器不支持,可以使用jquery插件 http://plugins.jquery.com/plugin-tags/localstorage

    27、解析json数据时报pareseerror错误

    jquery1.4版本后,采用了更为严格的json解析方式,即所有内容都必须要有双引号,如果升级jquery版本后,ajax加载json报错,可能就是这个原因。比如:

    //1.4之前版本,key没有引号,这样没问题

    {

    key:"28CATEGORY",

    status:"0"

    }

    //但升级1.4版本后,都必须加上双引号,格式如下:

    {

    "key":"28CATEGORY",

    "status":"0"

    }

    28、从元素中去除HTML

    (function($) { 
    $.fn.stripHtml = function() { 
      var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi; 
      this.each(function() { 
        $(this).html( $(this).html().replace(regexp,'') ); 
      });
      return $(this); 
    } 
    })(jQuery); 
    //用法: 
    $('div').stripHtml(); 
    View Code

    29、扩展String对象的方法

    $.extend(String.prototype, {
    isPositiveInteger:function(){
        return (new RegExp(/^[1-9]d*$/).test(this));
    },
    isInteger:function(){
        return (new RegExp(/^d+$/).test(this));
    },
    isNumber: function(value, element) {
        return (new RegExp(/^-?(?:d+|d{1,3}(?:,d{3})+)(?:.d+)?$/).test(this));
    },
    trim:function(){
        return this.replace(/(^s*)|(s*$)|
    |
    /g, "");
    },
    trans:function() {
        return this.replace(/&lt;/g, '<').replace(/&gt;/g,'>').replace(/&quot;/g, '"');
    },
    replaceAll:function(os, ns) {
        return this.replace(new RegExp(os,"gm"),ns);
    },
    skipChar:function(ch) {
        if (!this || this.length===0) {return '';}
        if (this.charAt(0)===ch) {return this.substring(1).skipChar(ch);}
        return this;
    },
    isValidPwd:function() {
        return (new RegExp(/^([_]|[a-zA-Z0-9]){6,32}$/).test(this)); 
    },
    isValidMail:function(){
        return(new RegExp(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/).test(this.trim()));
    },
    isSpaces:function() {
        for(var i=0; i<this.length; i+=1) {
        var ch = this.charAt(i);
        if (ch!=' '&& ch!="
    " && ch!="	" && ch!="
    ") {return false;}
        }
        return true;
    },
    isPhone:function() {
        return (new RegExp(/(^([0-9]{3,4}[-])?d{3,8}(-d{1,6})?$)|(^([0-9]{3,4})d{3,8}((d{1,6}))?$)|(^d{3,8}$)/).test(this));
    },
    isUrl:function(){
        return (new RegExp(/^[a-zA-z]+://([a-zA-Z0-9-.]+)([-w ./?%&=:]*)$/).test(this));
    },
    isExternalUrl:function(){
        return this.isUrl() && this.indexOf("://"+document.domain) == -1;
    }
    });
    
    $("button").click(function(){
        alert(   $("input").val().isInteger()  );
    });
    View Code
  • 相关阅读:
    51nod 1574 排列转换(猜结论)
    百度之星资格赛 1005 寻找母串(分块打表+组合数计算)
    百度之星资格赛 1004 度度熊的午饭时光(01背包+最小序号和+字典序+有bug)
    百度之星资格赛 1003 度度熊与邪恶大魔王(二维dp)
    HDU 4542 小明系列故事——未知剩余系 (数论|反素数)
    51nod 1060 最复杂的数(反素数)
    eclipse hadoop环境搭建 查看HDFS文件内容
    Windows jdk安装以及版本切换
    WIN10配置MongoDB
    Oracle 11g R2 for Win10(64位)的安装步骤
  • 原文地址:https://www.cnblogs.com/zhaojieln/p/4272776.html
Copyright © 2020-2023  润新知