JQ 优化处理(一)

  • JQ 优化(一)
  1. 选择器优化

    (一) $("#id")直接调用底层 document.getElementById();方法  如果这样无法找到你的元素,可以使用$("#id").find("div"),来精确查找到所需要的元素,这种直接根据ID选择器来找寻元素,性能最佳

    (二)如果id选择器无法满足需求,用标签选择器查询也是不错的$("p"),$("div")....性能优化的第二选择;他直接调用document.getElementByTagName()来定位DOM 元素;

    (三)使用类选择器.class这种有些复杂,相比较老版本IE8以前(包括IE8)只能靠DOM 搜索方式,无疑来说有较大影响.所以建议避开$(".class")这种,可能对性能产生很大影响的方式

    (四)使用$("[attribute=value]"),$("input name["datepickter"]"),  虽然现大多浏览器已经支持querySelectorAll()方法,但是用这种方法来定位DOM,性能不是很理想

    (五)使用$(":hidden")伪选择器来收索时,最好先确定一个父元素,先确定一个范围,负责很慢~如$("#content").find(":hidden");

....综上所诉,性能由上到下

  2 . 使用缓存对象优化JQ

    通常情况下我们查找DOM会写成

      $("button[name=‘setIPInf‘]").bind("click", function (e) {...});

      $("button[name=‘setIPInf‘]").css("background","red");

      $("button[name=‘setIPInf‘]").fadeIn("slow");

     这种情况,代码写的非常正确,但是JQ在每次执行一行代码的时候 都会产生一个DOM,创建多个JQ对象;建议以下写法

      var $setIPInf=$("button[name=‘setIPInf‘]")

      $setIPInf.bind("click", function (e) {...});

      $setIPInf.css("background","red");

      $setIPInf.fadeIn("slow");

      再优化:

      var $setIPInf=$("button[name=‘setIPInf‘]")

      $setIPInf.bind("click", function (e) {...})

          .css("background":"red"})

          .fadeIn("slow");

    减少DOM产生,可以大量优化JQ代码;

  3.循环时的DOM操作;

     特别在UL  TR 这些需要循环的地方,代码不当,对JQ 性能影响很大;

    例子:

      var top_100_list=[....];   //假设创建一个100独一无二元素,字符串

      $mylist=$("maylist");  //JQ选择到<ul>标签;

      for(var i=0;i<top_100_list.length;i++){

        $mylist.append("<li>"+top_100_list[i]+"</li>")

      };

      新修改后

       var top_100_list=[....];
              $mylist=$("maylist");
              top_100_li="";
            for(var i=0;i<top_100_list.length;i++){
                 top_100_li+="<li>"+top_100_list[i]+"</li>"
            };

      $mylist.html(top_100_li);

      千万别写成

       for(var i=0;i<100;i++){

        var $mylist=$("maylist");

        $mylist.append("<li>"+top_100_list[i]+"</li>")

      };

  4.在使用JQ数组的时候;

    很多人在使用JQ数组的时候,都喜欢用$.each();单单从性能上来讲并没有简单的for和while语句来的快

            $.each(array, function (i) {
                array[i]=i;
            })

    优化后:
       var array=new Array();
              for(var i=0;i<array.length;i++){
                  array[i]=i;
           }

    检查id是否为cotent;

    var $content=$("#content");

    if($content){...}

    if($content.length){...}

    

      

时间: 2024-10-10 08:47:28

JQ 优化处理(一)的相关文章

JQ优化性能

一.注意定义jQuery变量的时候添加var关键字这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的二.请使用一个var来定义变量如果你使用多个变量的话,请如下方式定义: 复制代码代码如下: var page = 0,   $loading = $('#loading'),   $body = $('body'); 不要给每一个

Jquery 多行拖拽图片排序 jq优化

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jQuery图片拖动排序代码</title> <style type="text/css"> .item_container{position:relative;height:auto;overflow:hidden;} .item_content ul{list-

浅谈前端性能优化(移动端)

上一篇讲了PC端的部分:前端性能优化(PC端),这次继续说移动端的.相对于PC端的,移动web浏览器上有一些明显的特点:设备的屏幕小.新特性兼容性较好.支持一些比较新的HTML5和CSS3.需要与Native应用交互等.但移动端可用的CPU资源和网络资源极为有限,因此要做好移动端web上的优化往往需要考虑做更多的事情.首先在移动web的前端页面渲染中,PC的优化规则同样适用,此外针对浏览器也要做一些更细节的优化达到更好的效果.需要注意的是,并不是移动端的优化在PC端不适用,而是由于兼容性的原因,

jq实现点击表格无刷新修改数据,优化版

1 <!-------------------修改密码-------------------------- > 2 $("#pwd").live("click",function(){//① 3 $(this).parents("tr").find("#a_cannel").text("取消"); 4 user=$(this).parents("tr").find("

Django 10 模型层 model 元信息,对象优化查询,自定义group_concat,基于jq的ajex异步请求

Django model 元信息,对象优化查询,自定义group_concat,基于jq的ajex异步请求 Model类元信息 ORM对应的类里面包含另一个Meta类,而Meta类封装了一些数据库的信息.主要字段如下: da_table:ORM在数据库中的表名默认是 app_类名,可以通过db_table可以重写表名. index_together:联合索引 unique_together:联合唯一索引 ordering:指定默认按什么字段排序. 只有设置了该属性,我们查询到的结果才可以被rev

20180826 优化版留言板 PHP ajax html css js jq

文件目录要清晰    以免改路径麻烦 进入登录页面   代码 chuli.php  代码 首页代码 getDate.php 代码 fasong.php   代码 大体的跟你们说下流程 进入login.html 页面  (账号密码传到chuli.PHP  里面是  :连接数据库比对账号密码是否正确  如果正确跳到shouye.php 如果失败返回login.PHP) 进入shouye.php页面(一个简单的表格,然后是ajsx到getDate.PHP请求) 进入getDate.PHP(连接数据库,

自写原生jq滚轮插件

自己仿bootStarp插件写的,思路局限,仅供交流,有好的建议还请不吝赐教//使用方法:                //html:需要ul>li>a的模式,a需要类名,需要设置page-scroll属性,page-scroll属性需要1以数字结尾,容器为所变化的最大页面                //js:请传入一个事件对象,对象需要传入属性:pageAnchorName(锚点id)及contianer(容器类)                //下标jq对象传入$navIndex属

jq 个性的隔行变色

效果图大致这样: 我的html格式部分这样:/*不过他们都说我的dom结构不太合理,同意.BUT,我就是不想写表格而写成的这样的,所以后面jq部分也要迁就了*/ <div class="pro_detail"> <!-- 列表详细信息 --> <ul> <li>001</li> <li>椰香奶茶</li> <li>¥ 10.00</li> <li>¥ 10.50<

15 款优化表单的 jQuery 插件

网页上的表单提供给用户的一种交互的方式,用户输入数据,提交到服务器,等待后续的处理.这些表单在我们浏览的网页中随处可见,也容易被我们忽略. 比如,"联系我们"页面会提供一个表单给用户填写他们的信息和想提的建议或者问题,但是开发者往往只关注网站的设计和用户交互的内容,并不会注意到用户进 行交互的方式--表单. 以下整理的这个列表就是为 Web开发者准备的,包括了 15 款优化表单的 jQuery 插件.希望大家能从中找到适合自己的 jQuery 插件,优化网页表单,更好的与用户进行交互.