<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    $("#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是一個(gè)按鈕對(duì)象,這表示該按鈕位于相同名稱按鈕的第幾個(gè),返回的索引值從0開始
    $("ctr_advance").html("更多信息"); //給span設(shè)置HTML內(nèi)容,此屬性類似innerHTML
        2、事件
        我再一次,強(qiáng)烈的建議,DOM元素添加的行為,一定不要和DOM元素混在一起,一定要和它們分離開來(lái),這里面有規(guī)范,也有教訓(xùn)。添加事件時(shí)我們一般在初始化的時(shí)候進(jìn)行,讓我們把<body onload="">這種寫法拋棄掉,采用jQuery的寫法。jQuery的代碼是可以跨瀏覽器運(yùn)行的,這樣的好處對(duì)開發(fā)人員來(lái)說(shuō)無(wú)疑是非常棒的!

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

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

    $("td").hover(
        
    function (){
            $(
    this).addClass("hover");
        },
        
    function (){
            $(
    this).removeClass("hover");
        }
    );
        toggle()方法的語(yǔ)法結(jié)構(gòu)為toggle(fn1,fn2,......fnN);
        它用于模仿鼠標(biāo)連續(xù)點(diǎn)擊事件,當(dāng)?shù)谝淮吸c(diǎn)擊元素,則觸發(fā)指定的第一個(gè)函數(shù)(fn1),當(dāng)再次點(diǎn)擊同一元素時(shí),則觸發(fā)指定的第二個(gè)函數(shù)(fn2),如果有更多函數(shù),則依次觸發(fā),直到最后一個(gè)。隨后的每次點(diǎn)擊都重復(fù)對(duì)這幾個(gè)函數(shù)的輪番調(diào)用。通常情況是定義兩個(gè)函數(shù),在顯示與隱藏中經(jīng)常這樣使用。對(duì)toggle事件來(lái)說(shuō),其實(shí)已經(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、動(dòng)畫
        show()hide()jQuery中最基本的動(dòng)畫。在HTML文檔里,為一個(gè)元素調(diào)用hide()方法,會(huì)將該元素的display樣式改為"none"
        比如,使用如下代碼隱藏element元素

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

    $(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
        運(yùn)行例子看下效果,明白了吧?
        滑動(dòng)動(dòng)畫方法是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");
            }
        );
        另外值得注意的是在進(jìn)行頁(yè)面開發(fā)時(shí),我們應(yīng)該而且也必須使用XHTML規(guī)范,它符合W3C標(biāo)準(zhǔn),是比HTML更規(guī)范、更嚴(yán)格的一個(gè)標(biāo)記語(yǔ)言。
        上面的例子,如果不加上下面一句,動(dòng)畫會(huì)有點(diǎn)小問(wèn)題
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
        對(duì)比這個(gè)寫法
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
        試試看看效果會(huì)有什么不一樣。
        4、AJAX
        jQuery提供了好幾個(gè)Ajax實(shí)現(xiàn),一般情況下你可以使用$.get$.post,當(dāng)然也可以采用最底層的實(shí)現(xiàn)$.ajax,推薦最后一種,它有一個(gè)參數(shù),是一個(gè)key/value對(duì)象,來(lái)看個(gè)例子
        // 在合同編號(hào)失去焦點(diǎn)時(shí)驗(yàn)證數(shù)據(jù)庫(kù)中是否存在相同的編號(hào)
        $("#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為存在相同的合同編號(hào)                            
                                alert("該合同編號(hào)已被使用,請(qǐng)重新輸入!");

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

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

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

    關(guān)鍵字struts2,很牛叉哦你.  回復(fù)  更多評(píng)論
      
    # re: jQuery學(xué)習(xí)總結(jié)(二) 2010-04-20 08:42 | 菠蘿大象
    @三國(guó)阿海
    jQuery in Action有中文版啊,翻譯的還可以。我沒(méi)在意google的搜索,不過(guò)前幾天發(fā)現(xiàn)有人轉(zhuǎn)我的SSH2全注解實(shí)例詳解文章又不注明出處,讓我很氣憤。所以決定以后的文章中大量使用圖片并加上水印。我并不反對(duì)你們轉(zhuǎn)載,但請(qǐng)注明一下出處吧,這很難嗎?  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 久久国产亚洲高清观看| 在线观看人成视频免费| 日韩亚洲国产综合久久久| 亚洲精品一卡2卡3卡三卡四卡| 一级做a爰片久久毛片免费看| 一二三四在线播放免费观看中文版视频| 亚洲日本一区二区一本一道| 亚洲色成人四虎在线观看| 免费A级毛片在线播放| 亚洲欧洲日产国码无码久久99 | 日日躁狠狠躁狠狠爱免费视频| 西西大胆无码视频免费| 亚洲成a人片毛片在线| 国产精品怡红院永久免费| 国产成人亚洲精品狼色在线| 亚洲美女中文字幕| 免费在线观看亚洲| 亚洲精品国产电影| 污污污视频在线免费观看| 国内精品久久久久久久亚洲| 精品一区二区三区免费视频| 亚洲福利视频导航| 成人免费福利视频| 免费播放国产性色生活片| 亚洲熟女少妇一区二区| 最近2019免费中文字幕视频三| 亚洲第一成年网站大全亚洲| 免费黄色一级毛片| 一级看片免费视频囗交| 91亚洲va在线天线va天堂va国产 | 免费亚洲视频在线观看| 中文字幕久无码免费久久| 亚洲美女一区二区三区| 女人18毛片特级一级免费视频| 国产免费一区二区三区免费视频| 亚洲a一级免费视频| 日韩免费a级在线观看| 成人自慰女黄网站免费大全| 亚洲精品在线免费观看视频| 四虎影视www四虎免费| 亚洲免费观看视频|