日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jquery > JQuery Tips(4)一些關于提高JQuery性能的Tips

JQuery Tips(4)一些關于提高JQuery性能的Tips

來源:程序員人生   發布時間:2013-11-25 17:35:47 閱讀次數:3638次

如今咱祖國已經崛起了..電腦的配置也是直線上升.可是js的性能問題依然不可小覷..尤其在萬惡的IE中..js引擎速度本來就慢..如果JS如果再寫不好,客戶端多開幾個窗口假死肯定是家常便飯了.廢話不說了,下面說說js性能提升的一些小Tips.

在選擇時,最好以ID選擇符作為開頭

我想這個很好理解,因為JQuery內部使用document.getElementByID方法進行ID選擇,這種方法比其他所有對DOM選擇的方法更快,所以以$("#")開頭是最好的,比如:

<div id="a">
<div class="b">
<div class="c">
<div class="d"></div>
</div>
</div>
</div>
<script type="text/javascript">
$(".b .c .d")//slow one
$("#a .b .c .d")//fast one
</script>

提供$()的上下文
在使用$()選擇頁面元素時,提供選擇的范圍可以減少選擇的時間,換句話說,讓選擇器只在頁面的一小片范圍內篩選而不是整個頁面當然會減少篩選時間,通過在$()函數內提供第二個參數作為上下文可以實現這一點

<div id="test">
<div class="inner">hi</div>
</div>
<script type="text/javascript">
alert($(".inner", document.getElementById("test")).text());//increase the speed by provide context
alert($(".inner").text());//traverse all the element so that is slower than above
</script>當然,在jquery定義(或者js函數)事件內,可以通過this來指代上下文:

<div id="test">
<div class="inner">hi</div>
</div>
<script type="text/javascript">
$("#test").click(function() {
var text = $(".inner", this).text(); //this means $("#test")
alert(text);//alert hi
});
</script>當然,上面的例子也可以寫成下面兩種方式:

<div id="test">
<div class="inner">hi</div>
</div>
<script type="text/javascript">
alert($("#test .inner").text()); //method 1
alert($("#test").find(".inner").text());//method 2 and it was best one
</script>其中利用find方法是所有方法中效率最高的

當然,如果你是通過id選擇符,也就是$("#..")來選擇,不需要提供上下文參數.這對速度沒有影響

將經常用的JQuery包裝好的元素進行保存
如題,這點比較重要,因為使用$()對頁面元素進行選擇是需要耗費時間的.而保存為變量進行使用時,可以避免這種浪費,比如:

<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
</ul>
<script type="text/javascript">
for (i = 0; i < $("ul li").length; i++) {//very bad,select $("ul li") so many times,waste a lot of time
alert($("ul li")[i].innerHTML);//same here,very bad
}
var $li = $("ul li");
for (i = 0; i < $li.length; i++) {//good one,only selct $("ul li") once
alert($li[i].innerHTML); //same here,good
}
</script>從代碼可以看到,避免多次重復選擇可以提高性能:-)

盡量少用選擇符
JQuery的選擇器是面向數組的,所以在條件允許的情況下盡量少用選擇器,比如:

<div id="Div0"></div>
<div id="Div1"></div>
<div id="Div2"></div>
<script type="text/javascript">
$("#Div0").slideDown("slow");
$("#Div1").slideDown("slow");
$("#Div2").slideDown("slow");//slow

$("Div0,Div1,Div2").slideDown("slow");//fast
</script>可以看出,使用選擇器并用逗號將被選擇的元素分開,并選擇多個元素不僅讓代碼更加簡潔,并且通過減少創建JQuery的實例所以在性能上也稍勝一籌!

在循環次數很多時避免使用$().each,而使用for循環
使用$().each方法讓在進行循環時,會讓編程更加輕松,少量的循環在使用$().each時對性能的影響可以忽略不計,但是當這個數字很大的時候,對性能的影響便開始變得可觀了.

這個數字,我查了下資料,據說是1000以下可以使用$().each方法,而這個數字如果繼續增加,則應該使用for循環語句。

盡量減少對DOM的操作
在頁面中對DOM操作是比較消耗的(比如在頁面插入或刪除一段文字),把這個改動降至最小是保持性能的最佳實踐!比如:

<ul id="test">
</ul>
<script type="text/javascript">
var $list = $("#test");
for (i = 1; i < 101; i++) {
$list.append("<li>Item" + i + "</li>");
} //very bad,change dom 100 times

var listItem = "";
for (j = 1; j < 101; j++) {
listItem += "<li>Item" + j + "</li>";
}
$list.html(listItem);
//good practice,only modify dom once

</script>可以看出,第一個例子對DOM修改100次,而第二個只對DOM修改1次,這上面的性能差距是顯而易見的。

可以屏蔽JQuery的動畫效果
在某些情況下,如果,可以關閉JQuery動畫,能對性能進行一定提升,屏蔽的方法是:

<script type="text/javascript">
jQuery.fx.off = true;
</script>

如果參數可以是JS對象,盡量使用對象
很對JQuery插件,或者JQuery的css和attr方法都接受鍵/值 或 js鍵/值對象 對作為參數,傳遞鍵值對象可以減少JQuery對象的創建,比如:

<div></div>
<script type="text/javascript">
$("div").css("display", "block");
$("div").css("background-color", "blue")
//slow,because it create more Jquery object

$("div").css({ "display": "block", "background-color": "blue" });
//fast,only create one object
</script>
當然也可以使用連綴的方式:

<div></div>
<script type="text/javascript">
$("div").css("display", "block").css("background-color", "blue");

</script但是這種方式的性能不如上面那種.需要使用兩個方法,并且需要多生成臨時對象.

以上都是一些對JQuery性能提升的小Tips

文章導讀:

JQuery Tips(3)-關于$()包裝集內元素的改變

JQuery Tips(2)-關于$()包裝集你不知道的

JQuery Tips(1)-關于$.Ready()

轉自:http://www.cnblogs.com/CareySon/

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一区二区久久 | 国产成人精品一区二区三区四区 | 成人毛片视频免费 | 国产精品不卡一区二区三区 | 中文字幕一区二区三区在线播放 | 国产欧美一区二区三区在线看 | 一区二区三区久久久 | 日韩精品在线电影 | 国产一区二区免费播放 | 国产成人精品一区二区三区在线 | 美女又爽又黄网站视频 | 九九热精品视频 | 亚洲国产综合在线 | 久草成人在线 | 国产三级欧美三级日产三级99 | 久久精品影视 | 嫩草影视在线观看 | 婷婷综合五月 | 国产福利在线播放 | 午夜神马福利视频 | 日本激情在线 | 精品免费视频一区二区 | 精品久久一区二区 | 国产三级香港三韩国三级 | 国产成人免费视频网站视频社区 | av黄网| 久久69精品久久久久久久电影好 | 亚洲精品一区二区三区不 | 久久久久99精品国产片 | 久久久精品一区二区 | 国产成人免费视频 | 成人在线视频一区 | 日本一二三区在线 | 国产精品网站在线 | 男人电影天堂 | 日本一二三区视频 | 黄色毛片视频免费 | 久久国产麻豆 | 日韩在线观看中文字幕 | 欧美视频网 | 国产精品1234 |