zoukankan      html  css  js  c++  java
  • jQuery笔记

    jQuery代码规范:http://bbs.html5cn.org/thread-86001-1-1.html

    jQuery教程学习网:http://jqfundamentals.com/chapter/jquery-basics
    jQuery学习网站:http://learn.jquery.com/
    jQuery性能改善:http://bbs.html5cn.org/thread-84143-1-1.html
    jQuery50个必备代码段:http://jingyan.baidu.com/article/d5a880eb4f0c5d13f147cc2e.html      
    可以直接拿来用的jQuery代码片段:http://www.html5cn.org/article-5355-1.html       http://bbs.html5cn.org/thread-85030-1-1.html
    jQuery中鲜为人知的几个方法:http://bbs.html5cn.org/thread-83804-1-1.html
    jQuery最佳实践性能优化:http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.html
    jQuery各种操作表单元素方法:http://bbs.html5cn.org/thread-85045-1-1.html
    使用向jQuery的时候,尽量使用原生的CSS3选择器。可能会让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。
     
    jQuery新技术详解:
    Deferred对象:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
    HTML5 FormData对象:http://www.ruanyifeng.com/blog/2012/09/xmlhttprequest_level_2.html
     
    你不再需要jQuery,用原生可替代:https://github.com/oneuijs/You-Dont-Need-jQuery/blob/master/README.zh-CN.md
    http://youmightnotneedjquery.com/
    选择器性能自上而下一次下降:id选择器$("#id")/$("#cont").find("div")→标签选择器$("div")/$("input")→类选择器$(".class")→属性选择器$("[attribute=value]")→伪选择器$(":hidden")
     
    1.addClass()只是设置样式而已,attr()可以设置更多的属性,当然包括class。attr()是设置属性,原有的属性会被替换。addClass()方法向被选元素添加一个或多个类,该方法不会移除已存在的class属性,仅仅添加一个或多个class属性。
    2.不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。对应mouseout
    只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。对应mouseleave
    这样的话,mouseenter子元素不会反复触发事件,否则在IE中经常有闪烁情况发生。
    
    3.每次调用$(function(){})方法都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。  
    4.如果CDN加载失败时,我们需要加载自己本地的jQuery文件,只需要在头部加上下面的代码就可以:
    (1) <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" ></script>
    
    (2) <script >window.jQuery || document.write('< script src="js/jquery-1.11.1.min.js" type="text/javascript"></script')</script>
    
    5.$.each()用法:http://www.cnblogs.com/mabelstyle/archive/2013/02/19/2917260.html
    
    $.map()用法:http://www.css88.com/jqapi-1.9/jQuery.map/
    
    $.grep()用法:此函数至少传递两个参数:待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。
    
    $.each()和$.map()的区别是:each返回的是原来的数组,并不会新创建一个数组。而map方法会返回一个新的数组。如果在没有必要的情况下使用map,则有可能造成内存浪费。each迭代数组时,可以通过访问this关键字得到,而map,在函数内部,this指的是window对象。
     
    6.预加载图片
    这个图片预加载片段让你能够快速的预先载入图片,不需要等待。代码如下:
    jQuery.preloadImagesInWebPage = function() { 
        for(var ctr = 0; ctr< argument s.length; ctr++){ 
            jQuery("").attr("src", argument s[ctr]); 
        } 
    } 
    调用方法:
    $.preloadImages("image1.gif", "image2.gif", "image3.gif"); 
    判断图片是否已加载:
    $('#imageObject').attr('src', 'image1.gif').load(function() { 
        alert('The image has been loaded…'); 
    });  
    7.在jQuery里,可以使用mouseenter和mouseleave事件来避免事件冒泡的副作用。
    8.js和jq左偏移量的区别和共同点(上偏移量同理):
    相同数值(都指的是元素的left样式,而且都带单位px):
    $("#id").css("left");
    documentElementById("id").style.left;//获取行间样式
    getComputedStyle(documentElementById("id"),null).left;//chrome,FF
    documentElementById("id").getCurrentStyle.left;//IE
    不同数值(都不带单位px):
    $("#id").offset().left //相对于当前文档的左偏移量,此方法只对可见元素有效。
    $("#id").position().left //返回匹配元素相对于父元素的位置(偏移)
    documentElementById("id").offsetLeft //相对于父对象的左边距,包括左外、内边距
    9.$(this)和this的区别:$(this)指的是jQuery对象,使用它只能调用jQuery的方法和属性,而this指的是HTML对象,并且js DOM对象$(this)[0]等价于this,两者都可以调用原生js方法和属性。(1)var $cr = $("#cr"); ar cr = $cr[0] //jQuery对象转换为DOM对象;(2)var cr = document.getElementById("cr"); var $cr = $(cr);//DOM对象转换为jQuery对象。
    10.具有 truefalse 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()。
    11.jQuery实现水平和垂直居中(窗口大小改变也适用):
    $(window).resize(function(){ 
        $(".mydiv").css({ 
            position: "absolute", 
            left: ($(window).width() - $(".mydiv").outerWidth())/2, 
            top: ($(window).height() - $(".mydiv").outerHeight())/2 
        });        
    }); 
    此外在页面载入时,就需要调用resize()。
    $(function(){ 
        $(window).resize(); 
    });
    12.<input type="text" id="results">
    var content = $('#results').val(); 
    if($.trim(content) === "") {
        alert('空');
     }
    如果写成if(content.trim() === "")在IE下则会报错。一般用$.trim(this.value).length < 1来判断是否为空
    13.jQuery实现下拉提示及自动填充邮箱:http://bbs.html5cn.org/thread-84263-1-1.html
    14.innerWidth():内宽度包括元素的内边距(padding),但不包括外边距(margin)、边框(border)等部分的高度。
    outerWidth():外宽度默认包括元素的内边距(padding)、边框(border),但不包括外边距(margin)部分的宽度。你也可以指定参数为true,以包括外边距(margin)部分的宽度。
    15.不要操作空缺对象,更多信息。
    // BAD: $("#nosuchthing").slideUp();     
    // GOOD:var $mySelection = $("#nosuchthing"); 
     if ($mySelection.length) { $mySelection.slideUp();  }  
    16.写一个能够进行方法链式调用的自定义jQuery函数也很容易。你所做的就是要写个能修改元素并返回元素的函数。代码如下(可重复利用的函数或方法):
    $.fn.makeRed = function() { 
      return $(this).css('background', 'red'); 
    } 
    $('#myTable').find('.firstColumn').makeRed().append('hello'); 
    17.jQuery(function($) {
      // 你可以在这里继续使用$作为别名
    });
    18.创建一个 <input> 元素必须同时设定 type 属性。因为微软规定 <input> 元素的 type 只能写一次。
    jQuery 代码:
    // 在 IE 中无效:
    $("<input>").attr("type", "checkbox");//IE不允许修改input元素的type或name特性
    // 在 IE 中有效:
    $("<input type ='checkbox'>");
    19.add()方法可以将多个选择器链接起来,创建满足任何一个选择器的元素组合。而且它不会扩充原始的包装集,而是创建一个新的包装集来保存结果。
    20.$("img").index($("img#box")[0]); //获取id为box的图片在所有图片集合中的下标,这种方法比$("img#box")的下标要准确。因为前者返回的是javascript数组,序号始终相对应,而后者则会根据同级位置发生变化。
    21.(function($){...})(jQuery)是一个“立即执行的匿名函数”,构成了一个闭包,可以防止命名冲突。在匿名函数内部,$参数引用jQuery对象。这个匿名函数不会等到DOM就绪就会执行。注意,使用on方法做事件委托时,脚本必须是在页面的head元素中链接和(或)执行的,即$(document).on("click","#id",function(){...})。之所以选择这个时机,因为这时候刚好document元素可用,而整个DOM还远未生成;如果把脚本放在结束的body标签前面,就没有意义了,因为那时候DOM已经完全可用了。
    22.用滚动加载动态页面的内容:
    var loading = false;
    $(window).scroll(function(){
     if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
          if(loading == false){
               loading = true;
               $('#loadingbar').css("display","block");
               $.get("load.php?start="+$('#loaded_max').val(), function(loaded){
                    $('body').append(loaded);
                    $('#loaded_max').val(parseInt($('#loaded_max').val())+50);
                    $('#loadingbar').css("display","none");
                    loading = false;
               });
          }
     }
    });
    $(document).ready(function() {
     $('#loaded_max').val(50);
    });
  • 相关阅读:
    js数组合并
    火狐浏览器打开新标签不断刷新,怎么解决?
    python获取当前路径
    python模块os
    python模块sys
    python玩丢手绢问题,出局的顺序
    python list元素为dict时的排序
    利用等概率Rand5产生等概率Rand3(转)
    python垃圾回收机制(转)
    负数在计算机中如何表示?(转)
  • 原文地址:https://www.cnblogs.com/gyx19930120/p/4419856.html
Copyright © 2011-2022 走看看