jQuery技术

10個超好用的撰寫jQuery技巧

字号+ 作者:H5之家 来源:H5之家 2015-10-05 12:07 我要评论( )

1.懶一點(Be lazy) //別這樣寫if ($(#item).get(0)) {$(#item).someFunction();}//或這樣寫if ($(#item).length) {$(#item).someFunction();}//乾脆一點,就是這樣寫$(#item).someFunction(); jQuery只會在確認#item這個id存在是才會執行someFunction(),因

1.懶一點(Be lazy)
//別這樣寫 if ($('#item').get(0)) { $('#item').someFunction(); } //或這樣寫 if ($('#item').length) { $('#item').someFunction(); } //乾脆一點,就是這樣寫 $('#item').someFunction();

jQuery只會在確認#item這個id存在是才會執行someFunction(),因此不需要再用if去判斷,多做一次檢查工作

2.抄捷徑(Use shortcuts)
//雖然這樣做一點問題都沒有,是jQery的正規寫法 $(document).ready(function(){ //... }); //但是走這條小路一樣會到達同樣的地方 $(function(){ //... });
這應該是眾所皆知的事,不過顯然不是那麼一回事

3.能連就連(Chain)
//不要這樣做 $('#frame').fadeIn(); $('#frame .title').show(); $('#frame a:visited').hide; //連起來就就對了 $('#frame').fadeIn() .find('.title').show().end() .find('a:visited').hide();
沒有必要的DOM查詢會耗費額外的運算,因此能連就把它連起來吧

4.任務編組才優雅(Group queries)
//醜斃的寫法 $('div.close').click(closeCallback); $('button.close').click(closeCallback); $('input.close').click(closeCallback); //優雅多了吧 $('div.close, button.close, input.close').click(closeCallback);

5.用Pro的作法處理相鄰元素(5. Select siblings like a pro)
//不要這樣做 $('#nav li').click(function(){ $('#nav li').removeClass('active'); $(this).addClass('active'); }); //這樣才帥氣 $('#nav li').click(function(){ $(this).addClass('active').siblings().removeClass('active'); });

----- wordsmith的閒話 -----
wordsmith開始用jQuery時,也常在用作者說不要用的寫法,寫的時候也覺得呆,但也沒進一步想怎麼解,現在看到這一招,真的是擊掌叫好呀。




6.使用each和map(Use each and map)
//試著避開下面的寫法 var output = []; for (var i=0;i < arr.length; i++) { output.push(arr[i]); } //這樣寫比較好 var output = $.map(arr, function() { ... }); //或是這樣作 var output = []; $.each(arr, function(index, value) { output.push(value); });
使用each或map會比較可靠,以免遇到有什麼JavaScript擴展了Array物件,反而會造成難以預料的情況。

------ wordsmith的閒話 ------
map我沒用過,而each還算常用,但也只是用jQuery就因襲下來了,沒去想過作者說的問題。




7.使用名稱空間(Use namespaces)
事件也可以當作名稱空間:
$('input').bind('blur.validation', function(e){ //... }); //data方法也接受名稱空間 $('input').data('validation.isValid', true);

------ wordsmith的閒話 ------
這個作法wordsmith以前想都沒想過,到現在也還沒領略妙處在哪,值得再著墨著墨。



8.triggerHandler是好物(triggerHandler is great)
//與其這樣做: var refreshFrame = function() { $('#frame').load(''); }; //或是這樣做 $('.button').click(refreshFrame); refreshFrame(); //不如這樣更好: $('.button').click(function() { $('#frame').load('/page/frame.html'); }).triggerHandler('click'); // 你也可以抄個小路 $('.button').click(function() { $('#frame').load('/page/frame.html'); }).click();

9.客製化事件(Custom events)
客製化事件在某些時候,可以讓你減去不少痛苦,而將它也很容易就可以封裝plugin之間的互動
$('.button').click(function() { $('div#frame').load('/page/frame.html', function(){ $(this).triggerHandler('frameLoaded'); }); }); // PluginA.js $('#frame').bind('frameLoaded', function(){ $(this).show('slide', {direction: 'top'}); }); // PluginB.js $('div').bind('frameLoaded', function(){ // do something else });

10.引進測試(Test !)
jQuery有一個不錯的測試框架叫QUnit,它能讓你輕鬆撰寫測試,讓你在修改程式時,可以確保它能像預期的樣子來運作,用法請參考下例:
module("A simple test"); test("The frame should appear #button is clicked", function() { expect(1); $('#button').click(); ok($('#frame').is(':visible'), "The frame is visible" ); });

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 7个有用的jQuery小技巧

    7个有用的jQuery小技巧

    2016-02-26 13:02

  • jQuery教程:14个实用的jQuery技巧

    jQuery教程:14个实用的jQuery技巧

    2016-02-06 10:00

  • jQuery中10个非常有用的遍历函数

    jQuery中10个非常有用的遍历函数

    2016-01-18 10:04

  • 学习jQuery必须知道常用的几种方法

    学习jQuery必须知道常用的几种方法

    2016-01-16 11:15

网友点评
l