亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 擴展 > jQuery > 正文

初學者全面接觸學習jquery(譯文)

2024-09-06 20:04:31
字體:
來源:轉載
供稿:網友

原文地址:http://docs.jquery.com/tutorials:getting_started_with_jquery

最好有javascript以及dom方面的知識,這對于理解其中的代碼很有幫助,不了解也不要緊,因為代碼本身就很簡潔。

這篇指南包括了 hello jquery、基本的selector、event、ajax、fx、以及一些插件。

tips:當你看到這篇文章時最好在第一時間看完,不要放到收藏夾里等待將來的某天再翻出來看,往往這一天不會到來。

其實在我之前已經有人翻譯了這篇文章,但是我覺得翻譯得有點粗糙,不易閱讀,因此又重新翻譯了一下,對我自己也又溫習了一下jquery。

ok!出發了

  1. setup
  2. hello jquery
  3. find me: using selectors and events //定位
  4. rate me: using ajax //投票
  5. animate me: using effects //動畫
  6. sort me: using the tablesorter plugin //排序
  7. plug me: writing your own plugins //插件
  8. next steps

setup(安裝)

下載地址:http://docs.jquery.com/downloading_jquery
得到jquery.js后,將其包含到目標文件就可以了,就像這樣

  1. $(document.ready(function() {
  2.    // do stuff when dom is ready
  3.  });

當dom都加載完后執行里面的語句,類似于window.onload。
那么載入完成后,我們來做些事情。

  1. $(document.ready(function() {
  2.    $("a".click(function() {
  3.      alert("hello jquery!";
  4.    });
  5.  });

當點擊任何一個鏈接時,都會彈出一個框,里面是什么內容,就不用我說了吧。
我們來品品這幾句話,首先是”$()”,這個可以當作一個選擇器,里面可以是tagname,比如例子中的”a”,還可以是什么,我們下面再說。
然后是一個click方法,相當于在每一個鏈接里都加了一句”onclick=…”,從這里可以看出jquery的一個很大的優點就是代碼和結構分離。

|||

find me(定位)

我想很多人喜歡jquery,很大一部分是她方便的定位,也正是這一特性,使得代碼和結構分離。
jquery有兩種方法來定位。一種是css和xpath,通過傳遞一個字符串給選擇器$,比如’$(”div > ul a”)’;另一種使用了一些methods,比如find。
先來看看第一個:

  1. $(document.ready(function() {
  2.    $("#orderedlist".addclass("red";
  3.  });

注意到了$函數的參數里有一個”#”,這個表示以id來定位,所以這句話將定位到id為orderedlist的dom,然后有一個addclass方法,顧名思義,就是添加一個class,class的名字是red。
下面我們再來添加一些方法給這個元素的下級。

  1. $(document.ready(function() {
  2.    $("#orderedlist > li".addclass("blue";
  3.  });

這將選擇所有id為orderedlist的li元素,并給它們添加一個blue class。
接著,我們來點復雜的,當鼠標移到上面時addclass,移走時removeclass,但只作用于最后一個li元素。

  1. $(document.ready(function() {
  2.    $("#orderedlist li:last".hover(function() {
  3.      $(this.addclass("green";
  4.    },function(){
  5.      $(this.removeclass("green";
  6.    });
  7.  });

再來品一品這段代碼,我覺得這段代碼里最關鍵的就是這個”,”,這個逗號免去了再寫一遍$(”#orderedlist li:last”)的麻煩。this指代的是當前所選的dom。

js中的onxxxx,在jquery中都有相對應的,比如onchange,onsubmit等等。

|||

有了上面的這些已經能做許多事了,再來看看上面說的第二種方法

  1. $(document.ready(function() {
  2.    $("#orderedlist".find("li".each(function(i {
  3.      $(this.append( " bam! " + i ;
  4.    });
  5.  });

出現了find方法,這句話的意思還是比較好理解的,定位到id為orderedlist的dom,找到所有的li元素,每一個都添加一個默認函數。
append方法是添加一些文字到所選的dom,所以這些文字會出現在dom的末尾。

如果要在提交form成功后,清空form

  1. $(document.ready(function() {
  2.    // use this to reset a single form
  3.    $("#reset".click(function() {
  4.      $("#form".reset();
  5.    });
  6.  });

當點擊reset后,通過調用reset方法,id為form的表單將會被重置。

如果要使所有的表單都清空,則只需去掉form前面的”#”即可。

如果要從dom中選取一組相似的元素,可以使用filter() 和 not(),filter將只選取符合表達式的元素。而not則正相反。

  1. $(document.ready(function() {
  2.    $("li".not("[ul]".css("border", "1px solid black";
  3.  });

這段代碼的意思是選取所有的li元素(但該li不能包含ul子元素),給它們加上邊框。
css方法,前面是屬性,后面是值(這只是用法之一)。

更進一步,如果我們要選取所有包含name屬性的鏈接,則可以使用下面這段代碼。

  1. $(document.ready(function() {
  2.    $("a[@name]".background("#eee";
  3.  });

很簡單吧,通過@指定就行了,如果要指定name為jquery的鏈接,也很方便,a[@name=jquery]就ok啦。
如果只匹配部分,只需將=改為*=,比如要找到所有包含jquery的name,(匹配jquery plugin、jquery home 等等)a[@name*=jquery]

|||

可以選擇parent,比如這段代碼

  1. $(document.ready(function(){
  2.    $("a".hover(function(){
  3.      $(this.parents("p".addclass("highlight";
  4.    },function(){
  5.      $(this.parents("p".removeclass("highlight";
  6.    });
  7.  });

順便說一句,$(document).ready(callback) 可以縮寫成 $(callback)

使用 ajax

這里不使用原來的例子,因為我覺得不是那么容易明白,所以用了jquery官方的例子,edit in place

url:http://docs.jquery.com/tutorials:edit_in_place_with_ajax

示范1
瀏覽者能夠在他所看的頁面的相應位置點擊編輯,而無需打開新頁面。

demo1:http://15daysofjquery.com/examples/jqueryeditinplace/divedit.php

  1. $(document.ready(function(){
  2.    setclickable();
  3.  });

當頁面載入完成后,激活setclickable函數。

  1. function setclickable() {
  2.    $('#editinplace'.click(function(){ ... });
  3.  }

這個應該就不用說了吧,設置id為editinplace的dom的click事件。

  1. var textarea = '<div><textarea rows="10" cols="60">' + $(this.html() + '</textarea>';
  2.  var button = '<div><input type="button" value="save" class="savebutton" /> or <input type="button" value="cancel" class="cancelbutton"/></div></div>';
  3.  var revert = $(this.html();

這個對應上面的省略號,也就是函數體。分別定義了3個變量,textarea是用來生成編輯框的,$(this).html指代的是原來該dom的內容。button用來生成保存和取消按鈕。revert用來相應取消事件。

然后是

  1. $(this.after(textarea+button.remove();

after的作用就是在目標dom的后面加上相應的內容,remove就是移去目標內容,所以這里有兩步,先是加上編輯框和按鈕,然后移去之前的內容。

|||
  1. $('.savebutton'.click(function(){savechanges(this, false;});
  2. $('.cancelbutton'.click(function(){savechanges(this, revert;});

為兩個按鈕定義click事件。

  1. .mouseover(function() {
  2.    $(this.addclass("editable";
  3.  })
  4. .mouseout(function() {
  5.    $(this.removeclass("editable";
  6.  });

定義鼠標移入和移走事件。

接著定義savechanges函數

  1. function savechanges(obj, cancel { ... }

如果cancle是false的話,那就意味著要保存編輯后的內容

  1. if (!cancel {
  2.    var t = $(obj.parent().siblings(0.val();
  3.    // ...
  4.  }

parent()對應的是input外面的div,siblings對應的是相鄰的dom,0指的是前面的dom,也就是

  1. <textarea rows="10" cols="60">' + $(this).html() + '</textarea>

接下來該來點關鍵的了

  1. $.post("test2.php",{content: t},function(txt){
  2.    alert(txt;
  3.  });

jquery的ajax方法,.post表示以post方式提交,第一個參數是目標頁面,在這里就是”test2.php”,第二個參數是提交的內容,最后是回調函數。txt是服務端傳遞過來的參數。

  1. else {
  2.    var t = cancel;
  3.  }

如果cancle不為false的話,就執行revert()方法。

  1. $(obj.parent().parent().after('<div id="editinplace">'+t+'</div>'.remove() ;

移走textarea和button,恢復原狀。
最后再調用setclickable方法就可以了,所有的js

  1. $(document.ready(function(){
  2. setclickable();
  3. });
  4.  
  5. function setclickable() {
  6. $('#editinplace'.click(function() {
  7. var textarea = '<div><textarea rows="10" cols="60">'+$(this.html()+'</textarea>';
  8. var button     = '<div><input type="button" value="save" class="savebutton" /> or <input type="button" value="cancel" class="cancelbutton" /></div></div>';
  9. var revert = $(this.html();
  10. $(this.after(textarea+button.remove();
  11. $('.savebutton'.click(function(){savechanges(this, false;});
  12. $('.cancelbutton'.click(function(){savechanges(this, revert;});
  13. })
  14. .mouseover(function() {
  15. $(this.addclass("editable";
  16. })
  17. .mouseout(function() {
  18. $(this.removeclass("editable";
  19. });
  20. };
  21.  
  22. function savechanges(obj, cancel {
  23. if(!cancel {
  24. var t = $(obj.parent().siblings(0.val();
  25. $.post("test2.php",{
  26.   content: t
  27. },function(txt){
  28. alert( txt;
  29. });
  30. }
  31. else {
  32. var t = cancel;
  33. }
  34. if(t=='' t='(click to add text)';
  35. $(obj.parent().parent().after('<div id="editinplace">'+t+'</div>'.remove();
  36. setclickable();
  37. }
|||

動畫效果

使用show()和hide()方法就能完成簡單的動畫效果

  1. $(document.ready(function(){
  2.    $("a".toggle(function(){
  3.      $(".stuff".hide('slow';
  4.    },function(){
  5.      $(".stuff".show('fast';
  6.    });
  7.  });

toggle方法對應點擊事件,當點擊目標dom時,輪流執行函數。所以上面這段代碼的意思是當點擊鏈接時,class名為stuff的dom出現和隱藏的效果交替。

可以通過animate()函數來創建復雜的動畫效果。

  1. $(document.ready(function(){
  2.    $("a".toggle(function(){
  3.      $(".stuff".animate({ height: 'hide', opacity: 'hide' }, 'slow';
  4.    },function(){
  5.      $(".stuff".animate({ height: 'show', opacity: 'show' }, 'slow';
  6.    });
  7.  });

jquery有一個非常好的插件 interface plugin ,通過它可以創建更多更炫的效果,瀏覽地址:http://interface.eyecon.ro/

排序:tablesorter 插件

tablesorter 插件 可以在客戶端排序表格的數據,插件下載地址:http://motherrussia.polyester.se/jquery---escaped_anchor:cdcc6a6e460c630945c44113b9c458c7--/tablesorter/

在載入這個插件的后,可以這么調用它

  1. $(document.ready(function(){
  2.    $("#large".tablesorter();
  3.  })

點擊表頭,表格的數據就會進行相應的排序

  1. $(document.ready(function() {
  2.    $("#large".tablesorter({
  3.      // class names for striping supplied as a array.
  4.      stripingrowclass: ['odd','even'],
  5.      // stripe rows on tablesorter init
  6.      striperowsonstartup: true
  7.    });
  8.  });

tablesorter的官方網站可以查看示例和使用方法,瀏覽地址:http://motherrussia.polyester.se/jquery---escaped_anchor:cdcc6a6e460c630945c44113b9c458c7--/tablesorter/

編寫自己的插件

只要照著下面的方法做,那么編寫一個插件也是很簡單的。
插件名稱
給插件命名,這里以”foobar”為例,創建一個jquery.[pluginname].js,比如jquery.foobar.js
添加一個客戶端方法

  1. jquery.fn.foobar = function() {
  2.    // do something
  3.  };

之后就可以這么調用了

  1. $(....foobar();

默認設置

  1. jquery.fn.foobar = function(options {
  2.    var settings = jquery.extend({
  3.      value: 5, name: "pete", bar: 655
  4.    }, options;
  5.  };

可以直接調用,也可以自己添加參數

  1. $("...".foobar({ value: 123, bar: 9 });

說明文檔
如果開放自己的插件,那么應該有一個說明文檔再配上實例。有了這些基本的概念之后,我們就來寫一個小插件

|||

多選框插件

如果將jquery用于form,那么碰到radio和checkboxes時,可能會這么處理

  1. $("input[@type='checkbox']".each(function() {
  2.    this.checked = true;
  3.    this.checked = false; // or, to uncheck
  4.    this.checked = !this.checked; // or, to toggle
  5.  });

如果嫌麻煩的話,可以寫個插件來處理each

  1. jquery.fn.check = function() {
  2.    return this.each(function() {
  3.      this.checked = true;
  4.    });
  5.  };

現在就可以這么使用這個插件了

  1. $("input[@type='checkbox']".check();

當然也可以為uncheck() 和 togglecheck()寫個插件,但在這里我們作為參數選項來達到這個目的。

  1. jquery.fn.check = function(mode {
  2.    // if mode is undefined, use 'on' as default
  3.    var mode = mode || 'on';
  4.  
  5.    return this.each(function() {
  6.      switch(mode {
  7.        case 'on':
  8.          this.checked = true;
  9.          break;
  10.        case 'off':
  11.          this.checked = false;
  12.          break;
  13.        case 'toggle':
  14.          this.checked = !this.checked;
  15.          break;
  16.      }
  17.    });
  18.  };

這樣默認就是on,調用的話,就可以這樣

  1. $("input[@type='checkbox']".check();
  2. $("input[@type='checkbox']".check('on';
  3. $("input[@type='checkbox']".check('off';
  4. $("input[@type='checkbox']".check('toggle';

可選設置

  1. jquery.fn.rateme = function(options {
  2.    // instead of selecting a static container with
  3.    // $("#rating"), we now use the jquery context
  4.    var container = this;
  5.  
  6.    var settings = jquery.extend({
  7.      url: "rate.php"
  8.      // put more defaults here
  9.    }, options;
  10.  
  11.    // ... rest of the code ...
  12.  
  13.    // if possible, return "this" to not break the chain
  14.    return this;
  15.  });

調用的時候

  1. $(....rateme({ url: "test.php" });

下一步

如果想更加熟悉或者開發js項目,可以考慮一下firefox的firebug插件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久综合久久美利坚合众国| 亚洲视频一区二区| 国产偷亚洲偷欧美偷精品| 91久久夜色精品国产网站| 国产精品日韩欧美综合| 亚洲福利视频免费观看| 亚洲一区二区在线播放| 亚洲视频精品在线| 国产欧美日韩综合精品| 91夜夜未满十八勿入爽爽影院| 国产97在线|日韩| 欧美一级成年大片在线观看| 成人欧美一区二区三区黑人| 久久久之久亚州精品露出| 91久久精品国产91久久性色| 国产日韩av在线| 国产精品∨欧美精品v日韩精品| 欧美日韩xxx| 91在线无精精品一区二区| 亚洲欧洲午夜一线一品| 久久久久久久久爱| 久久久www成人免费精品| 97超级碰碰人国产在线观看| 精品日韩美女的视频高清| 国产精品视频区| 91精品国产高清自在线| 久久久久国色av免费观看性色| 精品国产欧美一区二区三区成人| 欧美大人香蕉在线| 日韩精品视频在线| 国产欧美一区二区三区在线看| 亚洲一区二区三区成人在线视频精品| 日韩欧美中文免费| 国产日韩在线亚洲字幕中文| 欧美激情国产精品| 欧美一级电影久久| 欧美成人国产va精品日本一级| 色先锋资源久久综合5566| 91香蕉嫩草神马影院在线观看| 国产精品成熟老女人| 国产视频精品免费播放| 亚洲大尺度美女在线| 亚洲激情在线观看视频免费| 中文字幕一区日韩电影| 亚洲黄色www网站| 久久久女人电视剧免费播放下载| 午夜精品一区二区三区av| 日韩欧美极品在线观看| 成人精品在线观看| 国产主播喷水一区二区| 亚州精品天堂中文字幕| 另类少妇人与禽zozz0性伦| 久久免费视频这里只有精品| 亚洲国产精品人久久电影| 伊是香蕉大人久久| 91干在线观看| 国产精品色午夜在线观看| 91亚洲精品在线| 国产欧美一区二区三区久久| 国产亚洲aⅴaaaaaa毛片| 亚洲精美色品网站| 欧美日韩国产丝袜另类| 亚洲第一网中文字幕| 亚洲bt天天射| 超碰91人人草人人干| 日韩电影免费观看在线观看| 日韩中文字幕第一页| 777午夜精品福利在线观看| 精品亚洲一区二区三区在线播放| 精品久久香蕉国产线看观看gif| 久久夜色精品国产| 夜夜嗨av一区二区三区四区| 日韩欧美在线播放| 欧美激情xxxx性bbbb| 国产一区二区日韩精品欧美精品| 久久91亚洲人成电影网站| 91成人在线观看国产| 国产欧美日韩免费看aⅴ视频| 亚洲精品自产拍| 久久影院资源站| 国产999精品久久久影片官网| 成人午夜激情免费视频| 欧美福利视频在线观看| 九九热这里只有精品免费看| 欧美国产精品va在线观看| 国产999精品视频| 中文字幕亚洲激情| 亚洲欧美日韩区| 日韩免费电影在线观看| 最近免费中文字幕视频2019| 日韩在线播放视频| 成人国产亚洲精品a区天堂华泰| 久久久久久久97| 精品一区二区三区三区| 亚洲国产高清自拍| 久久精品中文字幕电影| 热门国产精品亚洲第一区在线| 亚洲美女av网站| 精品久久久一区二区| 欧美激情极品视频| 中文字幕亚洲一区二区三区五十路| 国产精品www| 国产欧美中文字幕| 国产欧洲精品视频| 欧美日韩免费网站| 国产精品白嫩美女在线观看| 91精品视频免费观看| 亚洲欧美在线播放| 国内免费久久久久久久久久久| 久久理论片午夜琪琪电影网| 欧美日韩国产精品一区| 国产精品嫩草影院一区二区| 欧美视频精品一区| 91精品啪在线观看麻豆免费| 亚洲级视频在线观看免费1级| 亚洲品质视频自拍网| 欧美视频不卡中文| 成人黄色在线播放| 欧美日韩国产一中文字不卡| 亚洲综合社区网| 国产精品自在线| 国产精品白嫩美女在线观看| 成人福利网站在线观看| 久久香蕉国产线看观看av| 91av在线视频观看| 欧美黄色片视频| 国产欧美日韩综合精品| 97超级碰碰人国产在线观看| 国产在线视频一区| 欧美一级在线亚洲天堂| 精品自在线视频| 高清一区二区三区日本久| 色妞一区二区三区| 成人黄色免费片| 国产精品久久久久999| 欧美大码xxxx| 亚洲va欧美va国产综合久久| 成人国产精品日本在线| 欧美成人免费一级人片100| 欧美第一页在线| 中文字幕av一区中文字幕天堂| 欧美xxxx做受欧美.88| 亚洲已满18点击进入在线看片| 亚洲欧美综合另类中字| 日本成人黄色片| 国产精品www色诱视频| 亚洲色图15p| 国产日韩欧美在线看| 国产三级精品网站| 福利微拍一区二区| 国产福利视频一区二区| 国产精品视频导航| 91在线播放国产| 国模视频一区二区| 欧美日韩在线影院| 亚洲人成啪啪网站| 中文字幕亚洲综合久久筱田步美| 国产精品高精视频免费| 国产精品影片在线观看| 亚洲夜晚福利在线观看| 欧美成人中文字幕在线| 久久天天躁狠狠躁夜夜爽蜜月| 91国内在线视频| 精品国内亚洲在观看18黄|