zoukankan      html  css  js  c++  java
  • 【锋利的Jquery】读书笔记十一

    项目进度太赶,天天公司加班12小时,没时间看书充电。2016年再更新一篇吧。现在凌晨2点36分。

    2017加油哦

    jquery合适的选择器

    $("#id")
    无疑是最佳提高性能的方法
    如果不能直接找到你要的元素
    那么可以考虑find()
    $("p").find("a")
    之外还有
    标签选择器 $("p")
    属性选择器$("[attr=value]");
    $(":hidden")建议大家不要使用 性能不好,
    如果要用可以这样
    $("#div").find(":hidden");

    缓存对象

    $("#traffic_light input.on").bind()
    $("#traffic_light input.on").css()
    $("#traffic_light input.on").fadeIn()
    导致jquery每次都要创建一个选择器 查找DOM 创建多个jqeury对象
    建议
    var $traffic = $("#traffic_light input.on");缓存对象
    $traffic.bind().css().fadeIn();
    进阶用法:
    如果缓存到全局环境中
    window.$my={
    head:$("head"),
    traffic:$("#traffic_light input.on"),
    traffic_button:$("#traffic_button")
    }
    function do_something(){
    var script = document.createElement("script");
    $my.head.append(script);
    $my.cool_result = $("#some_ul li");

    $my.traffic_button.css("border-color","aquamarine");
    }
    记住永远不要让相同的选择器再你的代码中出现多次;

    循环时的DOM操作

    var top = [] 假如有100个独一无二的字符串
    $mylist =$("#mylist");
    for (var i = 0 l=top_lenght ; i <l; i++) {
    top += "<li>"+top_list[i]+"</li>"
    }
    $mylist.append(html);

    append不可以放for循环里面 top应该提前创建好

    数组方式用jqeury对象

    建议使用for 或 while处理 比 $.each()效果更好
    var array = new Array()
    for (var i = 0; i < array.length; i++) {
    array[i] = i;

    }
    另外检测数组长度用
    if($("#div").length);返回true 或false;

    事件代理

    动态绑定事件
    $("#myTable").on("click","td",function(){
    $(this).css("background","royalblue")
    })

    讲你的代码转换成jquery插件

    (function(){
    jQuery.fn.youPlug=function(){
       //do smoething
    return this;
    }

    })(jQuery)

    使用join拼接字符串

    var top = [] 假如有100个独一无二的字符串
    $mylist =$("#mylist");
    for (var i = 0 l=top_lenght ; i <l; i++) {
    top[i] = "<li>"+top_list[i]+"</li>"
    }
    $mylist.append(top.join(""));

    合理利用HTML5的Data属性

    <body>
    <div id="dl" data-role="page" data-last-value="43" data-options='{"name":"jack"}'></div>

    <script type="text/javascript">

    $("#dl").data("role") //page

    </script>
    </body>

     扩展string对象的方法  正则表单提交

     1 <div>
     2 <input type="text" /><button >check</button>
     3 </div>
     4 <script>
     5 $.extend(String.prototype, {
     6 isPositiveInteger:function(){
     7     return (new RegExp(/^[1-9]d*$/).test(this));
     8 },
     9 isInteger:function(){
    10     return (new RegExp(/^d+$/).test(this));
    11 },
    12 isNumber: function(value, element) {
    13     return (new RegExp(/^-?(?:d+|d{1,3}(?:,d{3})+)(?:.d+)?$/).test(this));
    14 },
    15 trim:function(){
    16     return this.replace(/(^s*)|(s*$)|
    |
    /g, "");
    17 },
    18 trans:function() {
    19     return this.replace(/&lt;/g, '<').replace(/&gt;/g,'>').replace(/&quot;/g, '"');
    20 },
    21 replaceAll:function(os, ns) {
    22     return this.replace(new RegExp(os,"gm"),ns);
    23 },
    24 skipChar:function(ch) {
    25     if (!this || this.length===0) {return '';}
    26     if (this.charAt(0)===ch) {return this.substring(1).skipChar(ch);}
    27     return this;
    28 },
    29 isValidPwd:function() {
    30     return (new RegExp(/^([_]|[a-zA-Z0-9]){6,32}$/).test(this)); 
    31 },
    32 isValidMail:function(){
    33     return(new RegExp(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/).test(this.trim()));
    34 },
    35 isSpaces:function() {
    36     for(var i=0; i<this.length; i+=1) {
    37     var ch = this.charAt(i);
    38     if (ch!=' '&& ch!="
    " && ch!="	" && ch!="
    ") {return false;}
    39     }
    40     return true;
    41 },
    42 isPhone:function() {
    43     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));
    44 },
    45 isUrl:function(){
    46     return (new RegExp(/^[a-zA-z]+://([a-zA-Z0-9-.]+)([-w ./?%&=:]*)$/).test(this));
    47 },
    48 isExternalUrl:function(){
    49     return this.isUrl() && this.indexOf("://"+document.domain) == -1;
    50 }
    51 });
    52 
    53 $("button").click(function(){
    54     alert(   $("input").val().isInteger()  );
    55 });
    56 </script>
  • 相关阅读:
    fcc的高级算法题
    jq on方法绑定多个事件
    高效的jQuery代码编写技巧
    HTML 提高页面加载速度的方法
    link 和 import 导入外部样式的区别
    js将多个方法添加到window对象上的多种方法
    js 数组删去重复的加上没有的元素
    JS中定义对象原型的两种使用方法
    CSS 清除默认样式
    JavaScript中定义对象的四种方式 2012-5-10 15:19 阅读(0)
  • 原文地址:https://www.cnblogs.com/h5monkey/p/6238698.html
Copyright © 2011-2022 走看看