国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

jQuery 入門詳解(二)

DevYK / 2764人閱讀

摘要:相對論極大地改變了人類對宇宙和自然的常識性觀念,提出了同時的相對性四維時空彎曲時空等全新的概念。狹義相對性原理是相對論的兩個基本假定,在目前實驗的觀測下,物體的運動與相對論是吻合很好的,所以目前普遍認為相對論是正確的理論。

7. jQuery 里的事件機制
javascriptHTML之間的交互是通過用戶和瀏覽器操作頁面時引發的事件來處理的。jQuery不僅提供了更加優雅的事件處理語法,而且極大地增強了事件處理能力。
7.1 加載 DOM
前面章節我們已經對比了window.onload()$(document).ready()兩種方法的區別。兩種都是入口函數,只不過前者是js中的而后者是jQ中的。并且領著之間還是有區別的:

1、執行時機:

window.onload()方法是等到頁面中所有元素加載完畢之后,才執行,即javascript此時才可以訪問網頁中的任何元素。而jQuery使用$(document).ready()方法,可以在DOM載入就緒時就對其進行操縱并調用執行它所綁定的函數。也就是說在jQ中,不需要等待所有圖片加載完再執行。

但是就會有個問題,當獲取圖片寬高的時候,可能獲取不到。不過jQ中多帶帶提出了一個頁面加載的方法——load()方法,如果這個處理函數綁定給window對象則會在所有內容加載完畢之后觸發。

$(window).load(function(){
   // 執行代碼 
});

上面的代碼,等同于js中的:

window.onload = function(){
    // 執行代碼
}

2、多次使用:

javascript中入口函數只能寫一次,如果寫多個,下面會將上面的覆蓋掉:

window.onload = function(){
    alert(123);
}

window.onload = function(){
    alert(456);             // 頁面只會彈出 456
} 

jQuery中,入口函數可以寫多次,不會出現覆蓋的情況:

$(document).ready(function(){
   alert(123);          // 123               
});

$(document).ready(function(){
   alert(456);          // 456              
});

3、簡寫方式:
javascript中沒有簡寫方式,但是在jQ中有簡寫方式:

// 1-原始版寫法
$(document).ready(function(){
   // 執行代碼 
});

// 2-簡化寫法,document可以省略
$().ready(function(){
   // 執行代碼 
});

// 3-簡化寫法
$(function(){
    // 執行代碼
});
7.2 事件綁定

1、什么是事件綁定

在文檔裝載完成之后,如果打算為元素綁定事件來完成某些操作,則可以使用bind()方法,bind()方法的調用格式為:
bind(type [, data] ,fn);

bind()方法有三個參數:

type:事件類型,類型包括:blur,focus,load,resize,scroll,unload,click,dbclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error等。

[,data]:可選參數,作為event.data屬性值傳遞給事件對象的額外數據對象。

fn:用來綁定的處理函數。

示例代碼: [ 38-jq事件機制-事件綁定.html ]


什么是相對論?

相對論是關于時空和引力的基本理論,主要由阿爾伯特·愛因斯坦創立,依據研究的對象不同分為狹義相對論和廣義相對論。相對論的基本假設是相對性原理,即物理定律與參照系的選擇無關。

狹義相對論和廣義相對的區別是,前者討論的是勻速直線運動的參照系(慣性參照系)之間的物理定律,后者則推廣到具有加速度的參照系中(非慣性系),并在等效原理的假設下,廣泛應用于引力場中。相對論極大地改變了人類對宇宙和自然的“常識性”觀念,提出了“同時的相對性”、“四維時空”、“彎曲時空”等全新的概念。它發展了牛頓力學,推動物理學發展到一個新的高度。

狹義相對性原理是相對論的兩個基本假定,在目前實驗的觀測下,物體的運動與相對論是吻合很好的,所以目前普遍認為相對論是正確的理論。

效果圖:

注意:

is()方法,可以用來判斷一個元素是否包含某一屬性。

當一個選擇器多次出現的時候,可以用一個變量將它緩存起來。

2、簡寫綁定事件

jQuery提供了一套簡寫的方法,簡寫的方法和bind()的使用方法類似,實現效果也相同,但是可以減少代碼量:
$(function(){
    $("h2").click(function(){
       // 執行代碼 
    });
});
7.3 合成事件
jQuery 有兩個合成事件:hover()方法和toggle()方法(這里的toggle跟另一個方法toggle不是一個方法,這里的toggle方法因為重名的原因,已經在jQ1.8版本以后棄用了)。

1、hover()方法:

hover(enter,leaver); // enter 和 leaver 是兩個函數

hover()方法用于模擬光標懸停事件。當光標移動到元素上的時候會觸發第一個函數(enter),當光標離開元素的時候會觸發第二個函數(leaver)。

示例代碼: [ 39-jq事件機制-合成事件hover.html ]

$(function() {
    // hover 方法
    $("h2").hover(enter, leaver);
    var $content = $("h2").next();

    // 鼠標進入的時候觸發的函數
    function enter() {
        $content.show();
    }

    // 鼠標離開時觸發的函數
    function leaver() {
        $content.hide();
    }
});

2、toggle()方法:此方法自1.8版本以后,已棄用

toggle(fn1,fn2,...fnN);

toggle()方法,模擬的是鼠標單擊事件,當點擊第一次的時候,觸發對應的第一個函數(fn1),當點擊第二次的時候,觸發對應的第二個函數(fn2),一直到最后一個函數的時候,再點擊就會循環到第一個函數,就這樣一直循環切換。

另外一個 toggle() 方法,是切換元素的可見狀態,如果元素是可見的,事件觸發之后,就會切換成不可見。

$("h2").click(function(){
    $(this).next().toggle(); // 如果元素一開始是隱藏的,點擊之后就會切換成顯示。
});
7.4 事件冒泡
在前面特效篇里面,我們已經介紹了什么是事件冒泡,這里不再累贅,簡單來說,就是一個元素包含另一個元素,兩個元素同時綁定了點擊事件,當我點擊里面元素的時候,會同時觸發兩個事件函數,這就是事件冒泡。

具體產生的原理,和解決辦法請點擊這個鏈接,這里會有處理兼容性的詳細步驟。

示例代碼: [ 40-jq事件機制-事件冒泡.html ]


提示信息

提示信息

提示信息

效果圖:

我們可以看到,明明點擊的是最里面的盒子,但是三個點擊事件都同時觸發了。

1、事件對象:

由于在IE-DOM和標準DOM實現事件對象的方法各不相同,所以需要處理兼容性。在jQuery中,已經將我們封裝好了。 直接在觸發事件函數里面傳一個參數:
$("element").bind("click",function(event){
    // 執行代碼
});

2、阻止事件冒泡:

阻止事件的方法存也在兼容性,同樣的jQ中已經封裝好,直接使用stopPropagation()方法來阻止事件冒泡。

示例代碼: [ 41-jq事件機制-阻止事件冒泡.html ]

$(function() {
    $(".box").click(function(e) {                   // 事件對象
        $(this).children("p").text(".box被觸發了");
        e.stopPropagation();                        // 阻止事件冒泡
    });
    $(".box1").click(function(e) {
        $(this).children("p").text(".box1被觸發了");
        e.stopPropagation();

    });
    $(".box2").click(function(e) {
        $(this).children("p").text(".box2被觸發了");
        e.stopPropagation();
    });
});

效果圖:

3、阻止默認行為:

網頁中有很多元素都有默認行為,例如,單擊超鏈接后會跳轉、單擊提交按鈕后表單會提交,有時候我們需要阻止元素的默認行為。

jQ中提供了一個方法來阻止元素的默認行為:preventDefault

不加阻止默認行為時的效果:

示例代碼: [ 42-jq事件機制-阻止默認行為.html ]



效果圖:

4、return false:

如果想要同時對事件停止冒泡和阻止默認行為,可以有一種默認的簡寫方式:return false

5、事件捕獲:

jQ中不支持事件捕獲,如果想要事件捕獲的話,請參考原生的js
7.5 事件對象的屬性

1、event.type:

該方法可以獲取到事件的類型。
$("a").click(function(event){
    console.log(event.type);    // 打印a標簽點擊之后的事件類型  打印 ==> click
    return false;           // 阻止a標簽默認跳轉事件
});

2、event.stopPropagation()方法:

上面已經提過了,該方法是阻止事件冒泡。

3、event.preventDefault()方法:

上面已經提過了,該方法是阻止事件默認行為。

4、event.target:

該方法的作用是獲取到觸發事件的元素。
$("a").click(function(event){
    console.log(event.target);    // 打印 ==> a
    return false;                 // 阻止a標簽默認跳轉事件
});

5、event.pageX 和 event.pageY:

該方法的作用,是分別獲取到光標相對于頁面的x坐標和y坐標,如果頁面上有滾動條的話,還要加上滾動條的寬度和高度。

6、event.which

該方法的作用是在鼠標單擊事件中獲取到鼠標的左、中、右鍵;在鍵盤事件中獲取鍵盤的按鍵。

比如獲取鼠標的按鍵:

$("a").mousedown(function(event){
    console.log(event.which);     // 鼠標左鍵==> 1 鼠標中鍵==> 2 鼠標右鍵==> 3 
    return false;                 // 阻止a標簽默認跳轉事件
});

比如獲取鍵盤的按鍵:

$("input[text]").keyup(function(event){
    console.log(event.which);     // 對應按下的鍵盤碼
});

7、event.metaKey:

該方法是針對不同瀏覽器,獲取到按鍵。
7.6 移除事件
當我們想要移除一個事件的時候,可以使用unbind()方法。
unbind([type].[data]);

第一個參數是事件類型,第二個參數是將要移除的函數:

如果沒有參數,直接刪除所有的綁定的事件;

如果提供了事件類型作為參數,那只刪除該類型的綁定事件;

如果把在綁定時傳遞的處理函數作為第二個參數,則只有這個特定的事件處理函數會被刪除。

示例代碼: [ 43-jq事件機制-移除事件.html ]




效果圖:

7.7 模擬操作
什么是模擬操作呢?我們可以看到前面的單擊事件,都需要手動去觸發,模擬操作就是可以自動觸發click,而不需要用戶主動點擊。




一進入頁面就會自動彈出“呵呵”,其中 $("#btn").click();,也可以達到同樣的效果。

trigger()方法觸發事件后,會執行瀏覽器默認操作:

$("input").trigger("focus");

上面的代碼不僅會觸發元素綁定的focus事件,也會使input元素本身得到焦點(這就是瀏覽器的默認操作)。

triggerHandler()方法:

如果你只想觸發綁定的focus事件,而不想執行瀏覽器默認操作,可以使用triggerHandler()方法。
$("input").triggerHandler("focus");
7.8 事件委托
事件委托,首先按字面的意思就能看出來,是將事件交由別人來執行,再聯想到事件冒泡,是不是想到了?對,就是將子元素的事件通過冒泡的形式交由父元素來執行。

舉個例子:

假如想要給多個li都注冊點擊事件,只需要給li循環遍歷,再添加點擊事件,這種方法固然簡單,但是假如有100個、1000li的時候,這里的DOM操無形之中就繁瑣了。并且當我們動態添加li元素的時候,這些li是沒有點擊事件的。但是這些只要講點擊事件交給父元素來執行,就能實現了。

1、on + 注冊事件:

除了bind方法綁定事件之外,在jQuery1.7版本之后,新添了一種方法:on()方法用來綁定事件,off()方法用來解除綁定事件。on()方法既可以注冊事件,還可以注冊委托事件。
$(element).on(type,[selector],fn);

參數詳解:

type:字符串,事件類型,如:clickmouseover...;

selector:可選,字符串,用于過濾出被選中的元素中能觸發事件的后代元素。如果選擇器是 null 或者忽略了該選擇器,那么被選中的元素總是能觸發事件;

fn:事件被觸發執行的函數。

示例代碼:


111111

111111

111111

111111

123456

效果圖:

第二個參數其實就相當于一個過濾器的作用,給div里面的p注冊委托事件。在執行順序上,會先執行元素自己的事件,再去執行綁定的事件,最后執行父元素的事件。

當第二個參數傳進去的時候,就想當于給過濾的元素注冊委托事件

2、delegate 注冊委托事件:

delegate只能注冊委托事件。
$(fatheElement).delegate(selector,type,fn);

參數詳解:

fatheElement:父元素;

selector:可選,字符串,用于過濾出被選中的元素中能觸發事件的后代元素。如果選擇器是 null 或者忽略了該選擇器,那么被選中的元素總是能觸發事件;

type:事件類型;

fn:事件被觸發執行的函數。

7.9 其他用法

1、綁定多個事件類型:

$("div").bind("mouseover mouseout",function(){
   $(this).toggleClass("over");  // 當鼠標進入的時候,該元素的class屬性切換為over 鼠標離開時class切換為先前的值
});

2、添加事件的命名空間:

$("div").bind("click.plugin",function(){
   alert(123); 
});

$("div").bind("mouseover.plugin",function(){
   alert(456); 
});

$("div").bind("dbclick",function(){
   alert(666); 
});

$("button").click(function(){
    $("div").unbind(".plugin"); 
});

其中.plugin就是命名空間,當點擊button按鈕的時候,就刪除了事件的命名空間.plugin,此時對應的事件也會被移除。

相同的事件,不同的命名空間:

$("div").bind("click.plugin",function(){
   alert(456); 
});

$("div").bind("click",function(){
   alert(666); 
});

$("button").click(function(){
    $("div").trigger("click!");  // 注意后面的感嘆號
});

當點擊div的時候,會同時觸發click.pluginclick事件,如果點擊button只會觸發click事件,而不會觸發click.plugin事件。trigger("click!"),后面感嘆號表示的是匹配所有不在命名空間中的click方法。

8. jQuery 動畫
相對于原生jsjQuery中的動畫更加的方便,更加的強大。
8.1 show()方法 和 hide()方法
當一個元素調用show()方法的時候,會將該元素的display設置為block,當調用hide()方法的時候,會將該元素的display設置為none
$("h2").bind("mouseover",function(){
    $(this).next().show();  // 鼠標進入的時候 h2 下一個兄弟元素顯示
}).bind("mouseout",function(){
    $(this).next().hide();  // 鼠標離開的時候 h2 下一個兄弟元素隱藏
})

此時還沒有動畫的效果,下面給他們加上動畫效果

下面的代碼表示的是,元素在600ms內顯示出來:

$("element").show(600);

下面的代碼表示的是,元素在300ms內隱藏起來:

$("element").hide(300);

示例代碼: [ 45-jq動畫-show&hide.html ]





鼠標經過&離開

相對論是關于時空和引力的基本理論,主要由阿爾伯特·愛因斯坦創立,依據研究的對象不同分為狹義相對論和廣義相對論。相對論的基本假設是相對性原理,即物理定律與參照系的選擇無關。

效果圖:

我們可以看到,不管是show還是hide的時候,元素的不透明度都是在慢慢增加或者減小的。

8.2 fadeIn()方法 和 fadeOut()方法
showhide方法不同的是,fadeInfadeOut方法只改變元素的不透明度,不會去改變寬高。

下面的代碼表示的是元素淡入的效果,其中也可以傳時間:

$("element").fadeIn();

下面的代碼表示的是元素淡出的效果:

$("element").fadeOut();

示例代碼: [ 46-jq動畫-fadeIn&fadeOut.html ]

 $(function() {
    $("h4").bind("mouseover", function() {
        $(this).next().fadeIn();
    }).bind("mouseout", function() {
        $(this).next().fadeOut();
    });
});

效果圖:

8.3 slideUp()方法 和 slideDown()方法
slideUp()方法和slideDown()方法只會改變元素的高度,如果一個元素的display屬性值為“none”,調用slideDown()方法的時候元素由上至下延伸顯示。slideUp()正好相反,元素將由下到上縮短隱藏。

示例代碼: [ 47-jq動畫-slideDown&slideUp.html ]

 $(function() {
    $("h4").bind("mouseover", function() {
        $(this).next().slideDown();
    }).bind("mouseout", function() {
        $(this).next().slideUp();
    });
});

效果圖:

8.4 自定義動畫方法 animate()
前面幾種類型動畫,比較單一,很多時候不能滿足于用戶的需求,但是在jQ中還有一個自定義動畫animate,非常強大。
animate(params,speed,easing,callback);

參數說明如下:

params:一個包含樣式和值的對象,比如{p1:"val1",p2:"val2",...}

speed:動畫執行速度(可選),默認400

easing:表示過度使用哪種緩動函數(默認swingjQ內部還支持一個linear)

callback:在動畫執行完之后,執行的函數(可選)。

1、簡單的動畫:





效果圖:

2、累加、累減動畫:

通過累加一個值讓元素從當前位置,累加到900的位置
$("#box2").animate({
    left: "+=900" // 在當前位置累加到 900
}, 1000);

3、多重動畫:

同時執行多個動畫

$("#box3").click(function() {
    $(this).animate({
        left: "300",
        height: "200px",
        width: "200px",
        top: "200px"
    }, 2000);
});

效果圖:

我們可以看到所有的變化都是同時進行的。

按順序執行多個動畫

$("#box4").click(function() {
    $(this).animate({
        left: "400px",
        height: "150px",
        opacity: "1"
    }, 3000).animate({
        top: "150px",
        width: "150px"
    }, 3000).fadeOut("slow");
});

效果圖:

4、延遲動畫:

在動畫執行中如果想要對某一段動畫進行延遲操作,可以使用delay()方法。
$("#box5").click(function() {
    $(this).animate({
        left: "400px",
        height: "150px",
        opacity: "1"
    }, 3000)
    .delay(1000)
    .animate({
        top: "150px",
        width: "150px"
    }, 3000).fadeOut("slow");
});

效果圖:

5、動畫隊列:

一組元素上的效果:

當在一個animate()方法中應用多個屬性時,動畫是同時發生的;

當以鏈式的寫法應用到動畫方法時,動畫是按照順序發生的。

多組元素上的動畫:

默認情況下,幾組動畫是同時發生的;

當以回調形式應用動畫方式時,動畫按照回調順序發生的。

6、停止動畫:

如果需要在某處停止動畫需要使用stop()方法。
stop([clearQueue],[gotoEnd]);

兩個參數都是可選的,都為布爾值,clearQueue表示是否要清空未執行完的動畫隊列。gotoEnd表示的是直接將正在執行的動畫跳轉到末狀態。直接使用stop()方法,則會立即停止當前正在執行的動畫。

不明白的小伙伴,參考8.6小節,第二個案例 《動畫下拉菜單欄》

8.5 其他動畫方法

1、toggle()方法:

toggle()方法可以切換元素的可見狀態,如果元素是可見的,則切換為隱藏。如果元素是隱藏的,則切換為可見。
$("#btn1").click(function() {
    $(this).next().toggle();
});

效果圖:

只要循環點擊h4,它的下一個兄弟元素就會循環切換。

2、slideToggle()方法:

通過高度變化來切換匹配元素的可見性。
$("#btn2").click(function() {
    $(this).next().slideToggle();
});

效果圖:

3、fadeTo()方法:

fadeTo()方法可以將不透明度設置到指定的值。
$("#btn3").click(function() {
    $(this).next().fadeTo(600, 0.5);  // 600表示的是執行時間 0.5 表示目標值
});

效果圖:

4、fadeToggle()方法:

fadeToggle()方法可以切換不透明度。
$("#btn4").click(function() {
    $(this).next().fadeToggle();
});

效果圖:

8.6 jQuery 動畫案例
下面通過幾個簡單的例子,鞏固一下jQuery動畫的知識。

1、呼吸燈版輪播圖:

在實現原理上,與前面特效篇的是不同的,這里改變的是圖片的不透明度opacity,并且不需要讓所有li左浮動,ul也不需要設置一個很寬的寬度。在jQ中操作更加的簡單。

樣式上:

大盒子相對定位,圖片的li絕對定位,讓所有的圖片疊加在一起;

給所有的圖片li設置隱藏屬性,第一張圖片需要顯示;

js上:

定義一個index用來記錄當前點擊的張數;

當點擊右箭頭的時候,讓對應的圖片lifadeIn,其余的兄弟元素fadeOut,同時讓對應的小圓點添加current類,其余的兄弟元素移除這個類;

點擊左箭頭只需將index--,再進行判斷一下,其他的與點擊右箭頭原理是一樣的。

示例代碼: [ 50-jq動畫-案例-呼吸燈版輪播圖.html ]





< >

效果圖:

2、動畫下拉菜單欄:

動畫下拉菜單欄,主要實現原理還是運用jQ里面的兩個動畫slideDownslideUp,并且配合stop方法

先看一下,如果不加stop()方法,會是一個什么效果:

我們可以看到一個效果,當光標移到第一個“一級菜單”的時候,觸發動畫效果,但是動畫效果還沒結束,我就將光標移進了第二個菜單,觸發第二個菜單下拉效果。所以導致了動畫效果與光標不一致,此時只需要在光標移入、移出之前加上stop()方法,就能解決這個問題。

stop()方法會結束當前正在進行的動畫效果,并立即執行隊列中的下一個動畫。

示例代碼: [ 51-jq動畫-案例-動畫下拉菜單.html ]





效果圖:

3、手風琴:

實現原理:

給外部大盒子設置一個與圖片大小一致的寬高,并且設置相對定位

還是采用ul,li結構,li設置寬高,與圖片大小一致,設置絕對定

動態的給li添加背景圖片,因為li絕對定位的原因,此時所有的li都疊在一起

動態的給每個li設置left值(left*i),這時候li就會依次排開

大盒子還要設置一個overflow-hidden屬性,將多余的隱藏掉

給每個li注冊鼠標鼠標經過事件,然后根據下面推算出的規律(當前鼠標經過的索引index,他之前包括他自己的left值都是,設定的最小值乘以對應的索引。而他后面的會將設定的最小值乘以對應的索引后再加上450,這里的450不是一個固定值,根據規律找出來的)進行判斷,設置各自的left值;

鼠標離開的時候再讓所有的盒子恢復到一開始的位置,每個li顯示等分的寬度

大盒子沒有overflow-hidden的時候:

畫個圖,理解一下:

找規律:

結合上面的圖片,我們可以找到一個規律

當鼠標在第1個li上的時候,li下標index為0:

index:0 left:0

index:1 left:500px

index:2 left:550px

index:3 left:600px

index:4 left:650px

當鼠標在第2個li上的時候,li下標index為1:

index:0 left:0

index:1 left:50px

index:2 left:550px

index:3 left:600px

index:4 left:650px

當鼠標在第3個li上的時候,li下標index為2:

index:0 left:0

index:1 left:50px

index:2 left:100px

index:3 left:600px

index:4 left:650px

看出規律了嗎?

當對應li的下標<=鼠標懸停的的下標上的時候left值 是50*i

當對應li的下標>鼠標懸停的的下標上的時候left值 是50*i + ,450(450不是固定的值,是經過計算出來的)

示例代碼: [ 52-jq動畫-案例-手風琴.html ]





效果圖:

4、彈幕效果:

獲取輸入框的的 value 值;并生成 span 標簽

span 標簽添加到 頁面中,隨機顏色 隨機高度 span動畫從右向左

到達最左邊的時候刪除 span 標簽(不刪除會隨著輸入的內容越來越多影響性能)

示例代碼: [ 53-jq動畫-案例-彈幕效果.html ]


吐槽

效果圖:

9. jQuery 里的 Ajax 操作
Ajax全稱“Asynchronous JavaScript and XML”(異步的JavaScriptXML)。它的出現揭開了無刷新更新頁面的新時代。具體的實現方式以及Ajax的優缺點,在前面的一篇文章[《js 進階知識-Ajax篇》]()已經講得很詳細了,不明白的小伙伴,可以先去學習下原生js是如何實現Ajax的。

jQueryAjax操作進行了封裝,在jQuery$.ajax()方法屬于最底層的方法,第2層是load()$.get()$.post()方法,第3層就是$.getScript()$.getJSON()方法。

9.1 load()方法

1、載入HTML文檔

load()方法是jQuery中最為簡單和常用的Ajax方法,能載入遠程HTML代碼并插入DOM中。它的結構為:
load(url[,data][,callback]);

參數詳解:

參數名稱 類型 說明
url String 請求HTML頁面的URL地址
data(可選) Object 發送至服務器的key/value數據
callback(可選) Function 請求完成時的回調函數,無論請求成功還是失敗

示例代碼:

首先新建一個data.html的文件,里面模擬的是請求的數據:

張三:

哈哈哈,真有趣

李四:

頂樓上

王五:

66666

再創建一個主頁面,index.html






已有評論:

效果圖:

上面的例子可以看出來,開發人員只需要使用jQuery選擇器為HTML片段指定目標位置,然后將要加載的文件URL作為參數傳遞給load()方法即可。我們可以發現原本的data頁面是沒有為類comment設置樣式的,但是主頁面加載后同樣的樣式名會立即應用到新加載的內容上。

2、篩選載入的HTML文檔

上面的案例我們可以看到,點擊之后data.html里面的整個內容都被加載進來了。如果需要加載data.html頁面里的某些元素的時候該怎么辦呢?我們可以使用load()方法的URL參數來達到目的。只需要指定選擇符就ok了。

示例代碼:

// 選擇加載data.html頁面中class為“para”的內容,注意中間有一個空格
$(".resText").load("data.html .para");

效果圖:

我們可以看到,只有類名是“para”的被加載了。

3、傳遞方式:

load()方法的傳遞方式根據參數data來自動指定。如果沒有參數傳遞,則采用GET方式傳遞;反之則會自動轉換為POST方式:
// 1- 無data參數傳遞的時候,則是GET方式
$(".resText").load("data.php",function(){});

// 2- 有data參數傳遞的時候,則是POST方式
$(".resText").load("data.php",{name:"Levi",age:"18"},function(){});

4、回調函數:

回調函數是在頁面加載完成之后執行的操作,該函數有三個參數,分別是請求返回的內容、請求狀態、XMLHttpRequest對象:
$(".resText").load("data.php",function(responseText,textStatus,XMLHttpRequest){
    // responseText : 請求返回的內容
    // textStatus:請求狀態:success、error、notmodified、timeout 4種
    // XMLHttpRequest :XMLHttpRequest對象
});

load()方法中,無論Ajax請求是否成功,只要當請求完成之后,回調函數都會執行。

9.2 $.get()方法和$.post()方法
load()方法通常是用來從WEB服務器上獲取靜態的數據的,如果需要向服務器傳遞參數的話,可以使用$.get()方法和$.post()方法還有后面的$.ajax方法。

1、$.get()方法

$.get()方法使用GET方式來進行異步請求:
$.get(url [,data] [,callback] [,type]);

參數詳解:

參數名稱 類型 說明
url String 請求HTML頁面的URL地址
data(可選) Object 發送至服務器的key/value數據,會作為字符串憑接在url的后面
callback(可選) Function 請求完成時的回調函數(只有當Response的返回狀態是success的時候,才調用該函數)
type (可選) String 服務器返回內容的格式,包括xml、html、script、json、text、_default

回調函數:

$.get()方法的回調函數只有兩個參數:
$.get("get.php",{useraname: "Levi",age:18},function(data,textStatus){
    // data 返回的內容,可以是XML文檔、JSON文件、HTML片段等的
    // textStatus 請求狀態:success、error、notmodified、timeout 4種。
})

data參數代表請求返回的內容,textStatus參數代表請求回來的狀態,注意:只有當數據成功返回success后才被調用。

2、$.post()方法

它與$.get()方法的結構和使用方式都相同,不過他們之間仍有以下區別:

get請求會將參數跟在URL的后面進行傳遞,而post請求則是作為HTTP消息的實體內容發送給Web服務器;

get對傳輸的數據大小有限制(通常不大于2KB),而使用post方式傳遞數據量要比get方式大得多;

get方式請求的數據會被瀏覽器緩存起來,因此可以通過瀏覽器的歷史記錄中讀到這些數據,存在安全性問題。

9.3 $.ajax()方法
$.ajax()方式常用參數解析:
方法 作用
url 請求的地址
type 請求的方式
dataType 告訴jQuery,需要按照什么格式對服務器返回的數據進行解析,默認json
data 數據
success 請求成功的回調函數
error 請求失敗的回調函數
beforeSend 請求發送之前調用的函數
complete 不論請求是成功還是失敗的,只要請求完成就會調用
timeout 設置請求超時時間

示例代碼:

$.ajax({
    // 請求的地址
    url: "04-data.php",
    // 請求的方式
    type: "get",
    // 告訴jQuery,需要按照什么格式對服務器返回的數據進行解析,默認json
    dataType: "json",
    // 數據
    data: {
        msg: "我是來請求數據的"
    },
    // 請求成功的回調函數
    success: function(data) {
        console.log(data);
    },
    // 請求失敗的回調函數
    error: function() {
        console.log("失敗了");
    },
    // 請求發送之前調用的函數
    beforeSend: function() {
        console.log("請求發送之前調用的函數");
        // 如果返回一個false,那么就會阻止整個請求的發送
        // return false;
        // 用法:可以用作表單驗證,當表單內容符合規范的時候發送ajax請求,當不符合的時候就不發送ajax請求
    },
    // 不論請求是成功還是失敗的,只要請求完成就會調用
    complete: function() {
        console.log("請求完成了");
    },
    // 設置請求超時時間(單位:ms),超過這個時間后,就不會請求了
    timeout:2000
});
9.3 jQuery中的serialize和serializeArray方法

1、jQuery中的serialize方法:

serialize方法會將表單中所有的內容拼接成key=value&key=value這樣的字符串。

通過這種方式就不要再去手動獲取表單中的內容的

2、jQuery中的serializeArray方法:

上面的方法我們可以看到,獲取整個數據的時候,是很簡單,但是想要進行校驗的話就很難,因為上面的方法獲取的是一個字符串,不能進行校驗,所以此時我們需要另外一個方法,jQuery中的serializeArray方法。

示例代碼:ajax模擬表單校驗及注冊





    
    sing in page
    



    

用戶名不能為空

閱讀需要支付1元查看
<