隨筆-67  評論-522  文章-0  trackbacks-0
              在上一篇jQuery學(xué)習(xí)總結(jié)(一)中,簡單的介紹了jQuery提供對JavaScript開發(fā)的四個部分的支持,這篇文章將詳細(xì)的用代碼示例來說明如何實現(xiàn)。
              1、DOM
              jQuery提供強大的DOM查找功能,并且能夠很方便的進行取值和賦值操作。查找元素最主要的是使用選擇器,可能還會需要篩選器的配合。從項目中來看,給DOM元素設(shè)置idname,會比較容易實現(xiàn)需求。我列一下使用得最多的幾種選擇器#id、.classelement、:eq[attribute^=value]、[attribute$=value]、[attribute=value][attribute]、:checked、:selected等等。另外jQuery提供的屬性也是強大利器:attr、removeAttraddClass、removeClasshtml、val等,在實際中,大量的被應(yīng)用。在文檔處理及CSSappend、cloneempty、css、height、width也是使用頻率很高的。關(guān)于這部分的知識很復(fù)雜,精髓我可寫不出來,我只能把我在項目中的體會、感悟、想法記錄下來,給需要的人一點幫助就很開心了。下面來看幾個例子。

          $("#ctr_id").val(id); //給合同ID賦值
          $("#ctr_id").val(); //取得合同ID值
          $("#ctr_sum").attr("disabled","disabled"); //將合同金額輸入框設(shè)為不可用
          $("[name=ctrRadio]:checked").attr("checked",""); //取消已選中的單選框
          $("select[name='contract_kind'] option:eq(0)").attr("selected","selected"); //選中第一條記錄
          $("[name='btndel']").index(obj); //obj是一個按鈕對象,這表示該按鈕位于相同名稱按鈕的第幾個,返回的索引值從0開始
          $("ctr_advance").html("更多信息"); //給span設(shè)置HTML內(nèi)容,此屬性類似innerHTML
              2、事件
              我再一次,強烈的建議,DOM元素添加的行為,一定不要和DOM元素混在一起,一定要和它們分離開來,這里面有規(guī)范,也有教訓(xùn)。添加事件時我們一般在初始化的時候進行,讓我們把<body onload="">這種寫法拋棄掉,采用jQuery的寫法。jQuery的代碼是可以跨瀏覽器運行的,這樣的好處對開發(fā)人員來說無疑是非常棒的!

          $(document).ready(function(){
              // 在這里寫初始化代碼
          });
          也可以簡寫成:
          $(
          function(){
              // 在這里寫初始化代碼
          });
              關(guān)于事件類型,幫助文檔里面說得也比較詳細(xì)了,不清楚的話就查一下。為元素綁定事件,正規(guī)說法是寫成bind形式,其實我們一般都是采用簡寫方式
          $(function(){
              
          // 綁定click事件
              jQuery("#btn_add").click(
                  
          function(){
                      alert(
          "你點擊的是新增按鈕");
                  }
              );
              
          // 對一組控件進行事件綁定
              $("[name=ctrRadio]").each(function(index,item){
                  
          // 這里的index是索引,從0開始,item是當(dāng)前對象,也即this,可以省略這兩個參數(shù)
                  $(this).click(
                      
          function(){
                          alert($(
          this).attr("id"));
                      }
                  );
              });
          });
              jQuery事件中定義的函數(shù)全都是一個匿名函數(shù),如果在某些情況下,匿名函數(shù)內(nèi)部要執(zhí)行的代碼是一樣的,這樣重復(fù)定義就顯得不規(guī)范了。因此,可以把這部分代碼提取出來,寫成一個函數(shù),指定一個具體的名稱,再調(diào)用這個函數(shù),看下面這個例子
          function doSame(){}

          $(“btn_a”).click(
              
          function(){
                  doSame();
              }
          );
          $(“btn_b”).click(
              
          function(){
                  doSame();
              }
          );
          $(“btn_b”).click(
              
          function(){
                  doSame();
              }
          );
              除了一般的響應(yīng)事件,jQuery有兩個合成事件——hover()toggle()。這兩個事件的使用頻率也比較高。
              hover()方法的語法結(jié)構(gòu)為hover(over,out);
              它用于模仿鼠標(biāo)懸停事件,當(dāng)鼠標(biāo)移動到元素上時,會觸發(fā)指定的第一個函數(shù)(over)當(dāng)鼠標(biāo)移出這個元素時,會觸發(fā)指定的第二個函數(shù)(out)。

          $("td").hover(
              
          function (){
                  $(
          this).addClass("hover");
              },
              
          function (){
                  $(
          this).removeClass("hover");
              }
          );
              toggle()方法的語法結(jié)構(gòu)為toggle(fn1,fn2,......fnN);
              它用于模仿鼠標(biāo)連續(xù)點擊事件,當(dāng)?shù)谝淮吸c擊元素,則觸發(fā)指定的第一個函數(shù)(fn1),當(dāng)再次點擊同一元素時,則觸發(fā)指定的第二個函數(shù)(fn2),如果有更多函數(shù),則依次觸發(fā),直到最后一個。隨后的每次點擊都重復(fù)對這幾個函數(shù)的輪番調(diào)用。通常情況是定義兩個函數(shù),在顯示與隱藏中經(jīng)常這樣使用。toggle事件來說,其實已經(jīng)包含了click事件。

          $("#ctr_advance").toggle(
              
          function () {
                  $(
          "#tbl_advance").show();
                  $(
          this).html("隱藏");
              },
              
          function () {
                  $(
          "#tbl_advance").hide();
                  $(
          this).html("更多信息");
              }
          );
          <div id="ctr_advance">更多信息</div>
          <div id="ctr_info" class="hide">代碼省略</div>
              3、動畫
              show()hide()jQuery中最基本的動畫。在HTML文檔里,為一個元素調(diào)用hide()方法,會將該元素的display樣式改為"none"。
              比如,使用如下代碼隱藏element元素

          $("element").hide();  //通過.hide(),隱藏元素
              這段代碼的功能跟用css()方法設(shè)置display屬性效果相同
          element.css("display""none"); //通過.css(),隱藏元素
              當(dāng)把元素隱藏后,可以使用show()方法將元素的display樣式設(shè)置為先前的顯示狀態(tài)("block""inline")$("element").show();
              fadeIn()fadeOut()方法只改變元素的不透明度。fadeOut()方法會在指定的一段時間內(nèi)降低元素的不透明度,直到元素完全消失("display:none")。fadeIn()方法則相反。這是一組對應(yīng)的漸變效果, 淡入與淡出??聪旅娴拇a

          $(function(){
              $(
          "[name=radio]").each(function(){
                  $(
          this).hide().fadeIn(2000).fadeOut(2000);
              });
          });
          <input type="radio" name="radio" id="a" />1
          <input type="radio" name="radio" id="b" />2
          <input type="radio" name="radio" id="c" />3
          <input type="radio" name="radio" id="d" />4
          <input type="radio" name="radio" id="e" />5
          <input type="radio" name="radio" id="f" />6
              運行例子看下效果,明白了吧?
              滑動動畫方法是slideUp()slideDown()slideDown()方法,將使元素由上至下延伸顯示,slideUp()方法正好相反。

              $("#div_click").toggle(
                  
          function(){
                      $(
          "#radios").slideUp("slow");
                  },
                  
          function(){
                      $(
          "#radios").slideDown("slow");
                  }
              );
              
          <div id="div_click">click here</div>
              
          <div id="radios">
                  
          <div><input type="radio" name="radio" id="a" />1</div>
                  
          <div><input type="radio" name="radio" id="b" />2</div>
                  
          <div><input type="radio" name="radio" id="c" />3</div>
                  
          <div><input type="radio" name="radio" id="d" />4</div>
                  
          <div><input type="radio" name="radio" id="e" />5</div>
                  
          <div><input type="radio" name="radio" id="f" />6</div>
              
          </div>
              slideToggle()方法是前面兩者的合成,因此上面的例子也可以改寫成這樣
              $("#div_click").click(
                  
          function(){
                      $(
          "#radios").slideToggle("slow");
                  }
              );
              另外值得注意的是在進行頁面開發(fā)時,我們應(yīng)該而且也必須使用XHTML規(guī)范,它符合W3C標(biāo)準(zhǔn),是比HTML更規(guī)范、更嚴(yán)格的一個標(biāo)記語言。
              上面的例子,如果不加上下面一句,動畫會有點小問題
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
              對比這個寫法
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
              試試看看效果會有什么不一樣。
              4、AJAX
              jQuery提供了好幾個Ajax實現(xiàn),一般情況下你可以使用$.get$.post,當(dāng)然也可以采用最底層的實現(xiàn)$.ajax,推薦最后一種,它有一個參數(shù),是一個key/value對象,來看個例子
              // 在合同編號失去焦點時驗證數(shù)據(jù)庫中是否存在相同的編號
              $("#contCode").blur(
                  
          function(){
                      
          var ctrCode = $(this);
                      
          if(ctrCode.val() != ''){
                          
          //標(biāo)準(zhǔn)的ajax方式
                          $.ajax({
                              type:
          "POST",
                              url:
          "${ctx}/contractInfoAction.do?method=validateContractCode",
                              data:
          "contract_code="+ctrCode.val(),
                              success:
          function(data){
                                  
          if(data == '1'){ //1為存在相同的合同編號                            
                                      alert("該合同編號已被使用,請重新輸入!");

                                      ctrCode.val('');
                                      ctrCode.focus();
                                      
          return false;
                                  }
                              }
                          });
                      }
                  }
              );
              關(guān)于$.get$.post很簡單,幫助文檔中說的很清楚,不過有一點需要注意,這兩個方法的參數(shù)順序不能搞錯了,一定要按它規(guī)定的來。而對于$.ajax來說,因為里面是一個key/value對象,所以順序?qū)λ鼪]有影響,只要key/value對應(yīng)就不會有錯。
              這四個部分基本上涵蓋了jQuery的大部分內(nèi)容,也有許多示例幫助理解,另外多看幫助文檔也是一個非常好的學(xué)習(xí)方式。我深深的體會到,只有多動手做,才會有提高。光學(xué)不練是一點用處都沒有的。特別是在項目中學(xué)習(xí),那速度,真是"飛"一般的感覺?。」?,我們下次繼續(xù)討論。
              本文為菠蘿大象原創(chuàng),如要轉(zhuǎn)載請注明出處。
          posted on 2010-02-14 12:27 菠蘿大象 閱讀(3889) 評論(5)  編輯  收藏 所屬分類: jQuery

          評論:
          # re: jQuery學(xué)習(xí)總結(jié)(二) 2010-04-19 20:12 | 三國阿海
          對了,你有沒有好一點的書介紹給我啊,我要JQuery的.  回復(fù)  更多評論
            
          # re: jQuery學(xué)習(xí)總結(jié)(二) 2010-04-19 21:48 | 菠蘿大象
          @三國阿海
          你要看的話,我建議你看jQuery in Action,圖靈的。這本書寫的很不錯,我自己有,而且寫jQuery學(xué)習(xí)總結(jié)的時候,又反復(fù)看了一下。我不得不說下,在這些技術(shù)書籍方面,外國人確實比較厚道,把知識點,要點都寫出來了,不像國內(nèi)大部分作者,純粹是騙稿費。太讓人氣憤了。  回復(fù)  更多評論
            
          # re: jQuery學(xué)習(xí)總結(jié)(二) 2010-04-19 22:46 | 三國阿海
          可惜我看不懂老外寫的字。

          他們都不能用中文表達自己意思,傻傻的哦。  回復(fù)  更多評論
            
          # re: jQuery學(xué)習(xí)總結(jié)(二) 2010-04-19 22:48 | 三國阿海
          我在Google推薦的網(wǎng)站中找到你的,它發(fā)送到我Yahoo郵箱了。

          關(guān)鍵字struts2,很牛叉哦你.  回復(fù)  更多評論
            
          # re: jQuery學(xué)習(xí)總結(jié)(二) 2010-04-20 08:42 | 菠蘿大象
          @三國阿海
          jQuery in Action有中文版啊,翻譯的還可以。我沒在意google的搜索,不過前幾天發(fā)現(xiàn)有人轉(zhuǎn)我的SSH2全注解實例詳解文章又不注明出處,讓我很氣憤。所以決定以后的文章中大量使用圖片并加上水印。我并不反對你們轉(zhuǎn)載,但請注明一下出處吧,這很難嗎?  回復(fù)  更多評論
            
          主站蜘蛛池模板: 清徐县| 边坝县| 通许县| 永泰县| 新巴尔虎左旗| 登封市| 唐海县| 博兴县| 弥渡县| 瑞金市| 枝江市| 自治县| 九江市| 清流县| 富锦市| 油尖旺区| 穆棱市| 图木舒克市| 德昌县| 漳州市| 昌江| 尉氏县| 万全县| 抚顺市| 香格里拉县| 会泽县| 安远县| 彰化县| 崇义县| 略阳县| 望江县| 甘谷县| 衡阳县| 吐鲁番市| 东阳市| 南安市| 竹山县| 谷城县| 宜章县| 株洲市| 武城县|