jQuery性能优化与技巧

    xiaoxiao2021-03-25  60

    1.使用最新版本的jquery库

         jQuery新版本会对旧版本进行优化和Bug修复。但是使用时要测试一下,可能有些代码改了。

    2.使用合适的选择器

    $(“#id”):使用id来定位DOM元素是最佳提高性能的方式。因为jQuery是直接调用document.getElementById()。如果id找不到可以添加find()来缩小范围(

    $('#id').find('div').css(xxx=xxxx) )。所以最好先从id来着元素。

    $('p')、$('div'):这是第二选择。因为jQuery直接调用document.getElementByTagName()。

    $('.class'):ie9以上是使用document.getElementByClassName().ie8及其以下使用dom搜索方式实现会影响性能。有选择性的使用

    $("[attribute=value]"):大多数都是使用搜索方式来实现。尽量避免。

    $(":hidden"):需要搜索每一个元素来定位选择器。要使用最好先定位父元素

    性能从上往下降低。

    3.缓存对象

    $('#id').find('div').css(xxx); $('#id').find('div').hide(); $('#id').find('div').show(); 改为 var $a = $('#id').find('div'); $a.css(xxxx); $a.show(); $a.hide()

    因为每一个选择器都会创建jQuery对象。不要让相同的选择器在代码里出现多次。

    4.循环时的DOM操作

    var a=[...]; var $b = $('#abc'); for(int i=0;i<a.length;i++){ $b.append("<li>hello,a[i]</li>"); } 改为 var a=[...]; var b = ""; for(int i=0;i<a.length;i++){ b+="<li>hello,"+a[i]+"</li>"; } $("#abc").html(b);

    5.数组方式使用jQuery对象

          在性能方面建议使用for或while来处理,不要使用$.each();

    6.事件代理

    $("#table td").bind("click",function(){...})//绑定了所有的td 改为 $("#table").bind("click",function(event){ $(event.target).css();//只绑定了触发事件的元素 })

    7.把重用的代码定义为插件

    (function($){ $.fn.pluginName = function(){ //code } })(jQuery); 8.使用join()来拼接字符串

           创建一个数组,把字符串传进去,然后调用  数组名.join('')来拼接字符串。会比+好一点。

    9.合理一用html5的Data属性

    <div id="id" data-url="" data-option="{'name':'jack'}" data-last-value=""/> var $a = $("#id"); $a.data("url"); $a.data("option").name; $a.data("lastValue"); 10尽量使用原生的javaScript方法

    $("#abc").is(":checked"); $("#abc").get(0).checked; $(this).css("color":"red"); this.style.color="red"; $("<p></p>") $(document.createElement("p"))

    jQuery技巧

    1.禁用页面右键菜单

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

    2.输入框文字获取和失去焦点

    function F(input){ var defaultValue = input.val(); input.focus(function(){ if($.trim(input.val())==defaultValue){ input.val(""); } }).blur(function(){ if($.trim(input.val())==''){ input.val(defaultValue); } }); } 3.获取选择的下拉框

    $("#xxx option:selected")

    转载请注明原文地址: https://ju.6miu.com/read-38404.html

    最新回复(0)