最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery選擇器、DOM與Ajax從入門到應(yīng)用綜合指南

 更新時間:2026年07月20日 09:21:46   作者:二哈喇子!  
jQuery是一個跨瀏覽器的JavaScript庫,它通過一個簡潔的API提供了豐富的功能,這篇文章主要介紹了jQuery選擇器、DOM與Ajax從入門到應(yīng)用綜合指南的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

jQuery對象

1、jQuery的使用

在需要使用jQuery的頁面引入Js文件

在HTML文件中正確地引入jQuery庫非常重要。以下是正確的做法:

<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>

注:如果在使用jQuery對象時未引入jQuery的核心JS文件,則會報錯 ($ is not defined)。

使用jQuery選擇頁面元素并獲取其文本內(nèi)容

$符號是jQuery函數(shù)的別名,相當(dāng)于用于jQuery對象的引用, 選擇元素以及執(zhí)行各種DOM操作、事件處理等。

<div id="mydiv">hello</div>
<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
    // 獲取div元素
    var div = $("#mydiv"); // 正確的方式
    var div2 = jQuery("#mydiv"); // 也可以使用jQuery代替$,兩者效果相同
    console.log(div.text()); // 輸出div內(nèi)的文本 "hello"
</script>

2、jQuery包裝集與Dom對象

DOM與 jQuery對象轉(zhuǎn)換

使用原生DOM方法以及 jQuery選擇器來獲取頁面中的div元素。

DOM對象和jQuery對象的選擇及互相轉(zhuǎn)換

通過document.getElementById方法可以直接從DOM中選取元素。以下是正確的做法:

// 通過document獲取div
var divDom = document.getElementById("mydiv");
console.log(divDom); // 輸出的是一個原生的DOM元素對象

// jQuery包裝集對象:通過jQuery選擇器獲取div
var divJquery = $("#mydiv");
console.log(divJquery);

console.log("==== jQuery包裝集對象與DOM對象互相轉(zhuǎn)換 ====");

// 將DOM對象轉(zhuǎn)換成jQuery對象,使用$()將dom對象括起來
var domToJquery = $(divDom);  // 使用$(domObject)來包裹DOM對象
console.log(domToJquery);  // 輸出轉(zhuǎn)換后的jQuery對象

// 將jQuery對象轉(zhuǎn)換成DOM對象,獲取jQuery包裝集對象的下標(biāo)
var jqueryToDom = divJquery[0];   // 或者使用 divJquery.get(0)
console.log(jqueryToDom);   // 輸出原始的DOM對象

當(dāng)獲取元素對象,元素不存在時,
通過document獲取的值,返回null(通過判斷返回值是否為null,來得知元素是否存在)
通過jQuery獲取的值,返回空包裝集(通過判斷包裝集的長度length,來得知元素是否存在,存在至少length為1)

jQuery對象

使用jQuery的選擇器語法可以更方便地選取頁面元素:

var divDom = document.getElementById("mydiv");
console.log(mydiv)

// 通過jQuery選擇器獲取div
var div = $("#mydiv"); // 注意這里的$符號兩邊沒有空格,且字符串要用英文雙引號或單引號
console.log(div); // 輸出的是一個jQuery對象,包含了匹配到的所有元素

關(guān)鍵點說明:

  • 獲取DOM對象:使用document.getElementById("mydiv")獲取頁面中id為"mydiv"的元素。
  • 獲取jQuery對象:使用$("#mydiv")選取相同的元素,但這次是作為jQuery對象返回。
  • DOM對象轉(zhuǎn)jQuery對象:使用$()DOM對象括起來:$(DOM對象)
  • jQuery對象轉(zhuǎn)DOM對象:可以使用.get(0)方法從jQuery對象中提取出對應(yīng)的DOM對象。

jQuery選擇器

1、基礎(chǔ)選擇器

選擇器類型使用方法描述
id選擇器$("#id屬性值")獲取指定id屬性值的元素。如果出現(xiàn)多個同名id,只會獲取第1個
類選擇器$(".class屬性值")獲取指定class屬性值的元素
元素選擇器$("標(biāo)簽名/元素名")獲取指定標(biāo)簽名的元素
通用選擇器$("*")獲取所有的元素
組合選擇器$("選擇器1,選擇器2...")獲取指定選擇器選中的元素,多個選擇器之間用逗號隔開

【示例代碼】

注意:在下面的代碼示例中,變量名為clas而非class,以避免與JavaScript保留字沖突。

<script type="text/javascript">
    // ID選擇器  $("#id屬性值")
    var mydiv1 = $("#mydiv1");
    console.log("ID選擇器:", mydiv1);

    // 類選擇器  $(".class屬性值")
    var clas = $(".blue");
    console.log("類選擇器:", clas);

    // 元素選擇器   $("標(biāo)簽名/元素名")
    var divs = $("div");
    console.log("元素選擇器:", divs);

    // 通用選擇器   $("*")
    var all = $("*");
    console.log("通用選擇器:", all);

    // 組合選擇器  $("選擇器1,選擇器2,...")
    var group = $("#mydiv1, .blue, div");
    console.log("組合選擇器:", group);
</script>

關(guān)鍵點說明

  • 正確示例:$("#id屬性值")

  • 正確示例:var clas = $(".blue");

  • 選擇器使用

    • ID選擇器:通過#加上元素的ID來選取特定的元素。
    • 類選擇器:通過.加上類名來選取所有具有該類的元素。
    • 元素選擇器:直接使用標(biāo)簽名來選取頁面上所有的該類型的元素。
    • 通用選擇器:使用*來選取頁面上的所有元素。
    • 組合選擇器:通過逗號分隔不同的選擇器,可以同時選取多個不同條件的元素。

2、層次選擇器

選擇器類型連接符號使用方法描述
后代選擇器空格$("指定元素 元素名")獲取指定元素的所有指定子元素(包含子元素及子元素的子元素)
子代選擇器大于號 >$("指定元素 > 元素名")獲取指定元素的所有指定第一代子元素(只會選擇第一級子元素)
相鄰選擇器加號 +$("指定元素 + 元素名")獲取指定元素的下一個指定元素(只會找一個元素)
同輩選擇器波浪號 ~$("指定元素 ~ 元素名")獲取指定元素后面的所有指定元素
$(document).ready(function(){
    // 后代選擇器(空格)
    var hd = $("#food li");
    console.log("后代選擇器選中的元素:", hd);

    // 子代選擇器(大于號 `>`)
    var zd = $("#food > li"); 
    console.log("子代選擇器選中的元素:", zd);

    // 相鄰選擇器(加號 `+`)
    var xl = $("#mydiv + div"); // 選擇緊跟在#mydiv之后的div
    console.log("相鄰選擇器選中的元素:", xl);

    // 同輩選擇器(波浪號 `~`)
    var tb = $("#mydiv ~ div"); // 選擇#mydiv之后的所有同級div
    console.log("同輩選擇器選中的元素:", tb);
});

關(guān)鍵點說明

  • 后代選擇器:使用空格 來表示后代選擇器,它會選擇指定元素內(nèi)的所有匹配的后代元素。
  var hd = $("#food li");
  • 子代選擇器:使用大于號 > 來表示子代選擇器,它只會選擇直接子元素。
  var zd = $("#food > li");
  • 相鄰選擇器:使用加號 + 來表示相鄰選擇器,它會選擇緊接在另一個元素之后的某個元素。
  var xl = $("#mydiv + div");
  • 同輩選擇器:使用波浪號 ~ 來表示同輩選擇器,它會選擇位于同一個父元素下,并且在目標(biāo)元素之后的所有匹配的兄弟元素。
  var tb = $("#mydiv ~ div");

3、表單選擇器

jQuery提供了一些特殊的選擇器用于選取表單內(nèi)的特定元素。這里是一些常用的表單選擇器:

  • :input:匹配所有輸入元素,包括<input>,<textarea>,<select><button>。
  • :radio:匹配所有單選按鈕。
  • :checkbox:匹配所有復(fù)選框。
  • :checked:匹配所有被選中的元素(適用于單選按鈕和復(fù)選框)。
  • :selected:匹配所有被選中的<option>元素。

格式:$(":類型")

<script type="text/javascript">
    // 選擇所有輸入元素
    var forms = $(":input");
    console.log(forms);

    // 僅選擇<input>標(biāo)簽元素
    var inputs = $("input");
    console.log(inputs);

    // 獲取所有的單選框
    var radios = $(":radio");
    console.log(radios);
</script>

4、選擇器類型對比表

選擇器jQuery描述
[屬性名]$([屬性名]")獲取所有設(shè)置過指定屬性名的元素
[屬性名=‘屬性值’]$([屬性名='屬性值']")獲取所有設(shè)置過指定屬性名為指定值的元素
:checked$("checked")獲取選中狀態(tài)為選中的元素(單選框與復(fù)選框)
:selected$("selected")獲取選中狀態(tài)為選中的元素(下拉框)
:gt(index)$(":gt(index)")獲取下標(biāo)大于指定值的元素
:eq(index)$(":eq(index)")獲取下標(biāo)等于指定值的元素
:odd$(":odd ")獲取所有奇數(shù)下標(biāo)
:even$(":even")獲取所有偶數(shù)下標(biāo)

【示例代碼】

<script type="text/javascript">
    // [屬性名]  $("[屬性值]")
    var test = $("[name]");  //選擇所有設(shè)置了name屬性的元素
    console.log(test);

    // [屬性名='屬性值']   $([屬性名='屬性值']")
    var test2 = $("[name='ufav']");  //選擇所有設(shè)置了name屬性且值為'ufav'的元素
    console.log(test2);

    /* 獲取name為'usex'的被選中的單選框 */
    // 注意此處應(yīng)該是:checked
    var test3 = $(":radio[name='usex']:checked");
    console.log(test3);
</script>

Dom操作

1、操作元素的屬性

關(guān)于attr()prop()方法的描述:

分類描述attr() 方法prop() 方法
設(shè)置屬性給元素設(shè)置屬性值對象.attr("屬性名", "屬性值");對象.prop("屬性名", "屬性值");
獲取屬性獲取元素的屬性值var 屬性值 = 對象.attr("屬性名");var 屬性值 = 對象.prop("屬性名");
區(qū)別固有屬性可以操作元素本身就擁有的固有屬性可以操作元素本身就擁有的固有屬性
布爾類型屬性checked, selected, disabled可以操作,但不推薦用于布爾類型的屬性推薦使用,特別適合處理返回布爾值的屬性
自定義屬性用戶自己定義的屬性可以操作用戶自定義的屬性不能操作用戶自定義的屬性

獲取和設(shè)置固有屬性

ck1ck2代表復(fù)選框的id

// 獲取屬性 - 使用 attr()
var name1 = $("#ck1").attr("name");
console.log(name1); // 輸出 ck1 的 name 屬性值

// 設(shè)置屬性 - 使用 prop() 推薦用于布爾類型的屬性
$("#ck2").prop("checked", true); // 設(shè)置為選中狀態(tài)


// 獲取屬性 - 使用 prop()
var name2 = $("#ck1").prop("name");
console.log(name2); // 輸出 ck1 的 name 屬性值

// 設(shè)置屬性 - 使用 attr()
$("#ck2").attr("checked", "checked"); // 不推薦用于布爾類型的屬性

// 設(shè)置屬性 - 使用 prop()
$("#ck2").prop("checked", true); // 推薦用于布爾類型的屬性

獲取布爾類型的屬性

// 獲取布爾類型屬性 - 使用 attr() (不推薦)
var cked1 = $("#ck1").attr("checked");
console.log(cked1); // 可能返回 'checked' 或 undefined,取決于是否選中

// 獲取布爾類型屬性 - 使用 prop() (推薦)
var cked2 = $("#ck1").prop("checked");
console.log(cked2); // 返回 true 或 false

區(qū)別:

  1. 固有屬性:元素本身就擁有的屬性,attr()prop()都可以操作固有屬性
  2. 返回值是布爾類型的屬性checkedselecteddisabled、prop()操作返回值是布爾類型的屬性
  3. 自定義屬性:用戶自己定義的屬性,attr()可以操作,prop()不可以操作

總結(jié):如果屬性的返回值是布爾類型,選擇prop方法,否則使用attr方法

補(bǔ)充說明:attr()vsprop()

  • 固有屬性:指的是HTML標(biāo)簽本身所具備的屬性,例如input標(biāo)簽的type、value等屬性。對于這些屬性,雖然attr()prop()都可以操作,但對于布爾類型的屬性(如checked),使用prop()更為合適。

  • 布爾類型屬性:這些屬性反映了一個狀態(tài)(真或假)。對于這類屬性,使用prop()通常能得到更準(zhǔn)確的結(jié)果,一個復(fù)選框是否被選中應(yīng)該用prop('checked')來判斷。

  • 自定義屬性:指用戶通過data-*等方式添加到HTML標(biāo)簽上的額外屬性。這類屬性只能通過attr()方法來獲取或設(shè)置。

  • 固有屬性:HTML標(biāo)簽本身具備的屬性,如inputtypevalue等。對于布爾類型的屬性(例如checked, selected, disabled),推薦使用prop()方法。

  • 布爾類型屬性:反映狀態(tài)(真或假)。復(fù)選框是否被選中應(yīng)使用prop('checked')來判斷。

  • 自定義屬性:用戶通過data-*方式添加的額外屬性,這類屬性只能通過attr()方法來獲取或設(shè)置。

2、使用jQuery操作元素樣式

  1. 獲取元素的樣式類名

使用attr("class")可以獲取元素的所有類名。

var classList = $("#elementId").attr("class");
console.log(classList); // 輸出元素的所有類名
  1. 設(shè)置元素的樣式(覆蓋原有樣式)attr("class","樣式名")

直接設(shè)置CSS屬性會覆蓋原有的樣式值。

$("#elementId").css("color", "red"); // 將文本顏色設(shè)置為紅色
  1. 添加元素的樣式(在原有基礎(chǔ)上追加新的樣式類)

使用addClass("樣式名")方法可以在不移除原有類的情況下添加新的類。

$("#elementId").addClass("newClass"); // 添加一個名為 'newClass' 的新類
  1. 添加具體的樣式

添加一個或多個具體的樣式規(guī)則。對于多個樣式規(guī)則,可以傳遞一個對象給.css()方法。

  1. 添加一個具體的樣式:css("樣式名","樣式值")
  $("#elementId").css("background-color", "blue"); // 設(shè)置背景色為藍(lán)色
  1. 添加多個具體的樣式:css({"樣式名":"樣式值","樣式名":"樣式值"})
  $("#elementId").css({
      "font-size": "20px", // 設(shè)置字體大小為20px
      "border": "1px solid black" // 設(shè)置邊框樣式
  });
  1. 移除樣式

使用removeClass("樣式名")方法可以從元素中移除指定的類。

$("#elementId").removeClass("oldClass"); // 移除名為 'oldClass' 的類

如果要移除所有類,可以直接調(diào)用removeClass()而無需參數(shù):

$("#elementId").removeClass(); // 移除所有類

這些方法提供了靈活的方式來操作HTML元素的樣式,無論是通過直接修改樣式屬性還是通過添加、移除樣式類。根據(jù)具體的需求選擇合適的方法可以有效地控制頁面元素的外觀。

方法說明
html()獲取元素的 html 內(nèi)容
html("html,內(nèi)容")設(shè)置元素的 html 內(nèi)容
text()獲取元素的 文本 內(nèi)容,不包含 html
text("text,內(nèi)容")設(shè)置元素的 文本 內(nèi)容,不包含 html
val()獲取元素的 value 值
val("值")設(shè)定元素的 value 值

操作元素的內(nèi)容:
val()操作表單元素的值
取值:var值=表單元素對象.val();
賦值:表單元素對象.val(值);

html()操作非表單元素的內(nèi)容(包含html標(biāo)簽)
取值:var內(nèi)容 = 對象.html();
賦值:對象.html(內(nèi)容);

text()操作非表單元素的文本內(nèi)容(不包含html標(biāo)簽)
取值:var內(nèi)容=對象.text();
賦值:對象.text(內(nèi)容)

獲取元素的樣式類名

var classList = $("#elementId").attr("class");
console.log(classList); // 輸出元素的所有類名

設(shè)置元素的樣式

直接設(shè)置CSS屬性會覆蓋原有的樣式值:

$("#elementId").css("color", "red"); // 將文本顏色設(shè)置為紅色

添加元素的樣式

在不移除原有類的情況下添加新的類:

$("#elementId").addClass("newClass"); // 添加一個名為 'newClass' 的新類

移除樣式

從元素中移除指定的類:

$("#elementId").removeClass("oldClass"); // 移除名為 'oldClass' 的類

如果想要移除所有類:

$("#elementId").removeClass(); // 移除所有類

3、操作元素的內(nèi)容

方法說明
html()獲取或設(shè)置元素的HTML內(nèi)容
text()獲取或設(shè)置元素的文本內(nèi)容,不包含HTML
val()獲取或設(shè)置表單元素的值

【示例代碼】

<input type="text" name="uname" id="uname" value="oop" />
<div id="html"></div>
<div id="text"></div>

<script type="text/javascript">
    /* val() 操作表單元素的值 */
    
    // 通過原生 JavaScript 獲取值
    console.log(document.getElementById("uname").value);
    // 使用原生 JavaScript 賦值
    document.getElementById("uname").value = "面向?qū)ο?;
    
    // 通過 val 方式獲取值
    console.log($("#uname").val());
    // 通過 val 方式獲賦值
    $("#uname").val("面向?qū)ο?);
    
    /* html() 操作非表單元素的內(nèi)容(包含 HTML 標(biāo)簽) */
    // 賦值
    $("#html").html("Hello");
    $("#html").html("<h2>Hello</h2>");
    // 取值
    console.log($("#html").html());

	/* text()操作非表單元素的文本內(nèi)容 (不包含html標(biāo)簽) */
    // 賦值
    $("#text").html("Hello");
    $("#text").html("<h2>Hello</h2>");
    // 取值
    console.log($("#html").text());
</script>

4、創(chuàng)建元素和添加元素

創(chuàng)建元素:$("元素標(biāo)簽")

// 定義html字符串
var htmlTxt = "<p>這是一個段落</p>"; 
console.log(htmlTxt); // 輸出原始的HTML字符串

// 將html字符串轉(zhuǎn)換成jQuery對象
var htmlJquery = $(htmlTxt); 
console.log(htmlJquery); // 輸出jQuery對象

// 輸出html字符串中的內(nèi)容(即<p>標(biāo)簽內(nèi)的文本)
console.log(htmlJquery.html()); // 輸出<p>標(biāo)簽內(nèi)的文本內(nèi)容

添加元素

  • 對象.before("內(nèi)容"):前追加,在元素的同級追加,內(nèi)容可以是對象、html或字符串
  • 對象.after("內(nèi)容"):后追加,在元素的同級追加,內(nèi)容可以是對象、html或字符串
  • 對象.prepend("內(nèi)容"):在元素的內(nèi)部最前面追加子元素,內(nèi)容可以是對象、html或字符串
  • 對象.append("內(nèi)容"):在元素的內(nèi)部最后面追加子元素,內(nèi)容可以是對象、html或字符串
  • $("內(nèi)容").prependTo(對象):在元素的內(nèi)部最前面追加子元素,內(nèi)容可以是對象、html或字符串
  • $("內(nèi)容").appendTo(對象):在元素的內(nèi)部最后面追加子元素,內(nèi)容可以是對象、html或字符串
<span class="red">泰山</span>
<span class="blue">偶像</span>
<script type="text/javascript">
console.log("----- 同級追加 -----");
    // 得到目標(biāo)對象
    var ts = $(".red");

    // 準(zhǔn)備要追加的內(nèi)容
    var span = "<span class='pink'>女神</span>";

    // 將內(nèi)容追加到指定元素前面
    ts.before(span);

    // 將內(nèi)容追加到指定元素后面
    ts.after(span);

    // 得到要追加的元素(已存在的元素)
    var blue = $(".blue");

    // 追加已有元素
    ts.before(blue);  // 在 .red 元素之前插入 .blue 元素
    ts.after(blue);   // 在 .red 元素之后插入 .blue 元素

    // 如果需要打印日志來確認(rèn)操作結(jié)果
    console.log(ts);
    console.log($(".pink")); // 打印新添加的 span 元素
    console.log(blue);       // 打印 .blue 元素
</script>

添加元素時(同級添加和子元素添加)

如果元素不存在,則創(chuàng)建元素,并添加

如果元素存在,則會獲取已存在的元素,并剪切到新的位置

<script type="text/javascript">
console.log("----- 子元素追加 -----");
    // 準(zhǔn)備要追加的元素
    var sp = "<span>老臘肉</span>";
    var sp2 = "<span>小奶狗</span>";

    // prepend():在選定元素的最前面追加子元素
    $(".green").prepend(sp);

    // append():在選定元素的最后面追加子元素
    $(".green").append(sp2);

    // prependTo():將新元素插入到選定元素的最前面
    $(sp).prependTo($(".green"));

    // appendTo():將新元素插入到選定元素的最后面
    $(sp2).appendTo($(".green"));

    // 追加已存在的元素(例如帶有 .blue 類的元素)
    $(".green").append($(".blue"));

    // 打印日志來確認(rèn)操作結(jié)果
    console.log($(".green"));
</script>

5、刪除元素

remove():刪除所選元素或指定的子元素,包括整個標(biāo)簽和內(nèi)容一起刪
empty():清空所選元素的內(nèi)容

// 刪除class屬性為green的元素
$(".green").remove(); 

// 清空元素(移除class屬性為blue的元素內(nèi)部的所有內(nèi)容)
$(".blue").empty();

6、遍歷元素each()

$(selector).each(function(index, element) :遍歷元素
參數(shù)function為遍歷時的回調(diào)函數(shù)
index為遍歷元素的下標(biāo),從0開始。
element是當(dāng)前的元素,此時是dom元素。

$(".green").each(function(index, element) {
    // 'this' 是當(dāng)前遍歷到的DOM對象
    console.log(this); // 輸出當(dāng)前的DOM對象

    // 輸出當(dāng)前DOM對象的innerHTML屬性,顯示其內(nèi)部HTML內(nèi)容
    console.log(this.innerHTML);

    // 使用$(this)將DOM對象包裝成一個jQuery對象,并輸出其html內(nèi)容
    console.log($(this).html());

    // 輸出當(dāng)前元素的下標(biāo)(索引)
    console.log("下標(biāo):" + index);

    // 輸出當(dāng)前遍歷到的DOM對象
    console.log(element);

    // 將當(dāng)前的DOM對象轉(zhuǎn)換為jQuery對象并輸出
    console.log($(element));
});

jQuery事件

1、ready加載事件

ready()類似于onLoad()事件
ready()可以寫多個,按順序執(zhí)行

$(document).ready(function(){}) 
等價于 
$(function(){})

ready 加載事件(預(yù)加載事件),當(dāng)HTML的文檔結(jié)構(gòu)加載完畢后執(zhí)行

只有引入了JS文件才能用

格式:

$(document).ready(function(){

});

簡略版:

$(document).ready(function(){
    console.log("ready加載事件...");
});

$(function(){
    console.log("ready加載事件2...");
});

onload加載事件(JS中提供的方法),當(dāng)HTML的文檔結(jié)構(gòu)及引入的資源加載完畢后執(zhí)行

window.onload=function() {
}

加載慢

window.onload = function() {
    console.log("load加載事件...");
};

2、綁定事件

  • eventType:是一個對應(yīng)的事件類型的字符串
  1. 事件類型

    • 點擊事件:click
    • 聚焦事件:focus
    • 失去焦點事件(通常稱為失效事件):blur
    • 改變事件:change
    • 鼠標(biāo)懸停事件:應(yīng)為 mouseover 而不是 moueseover
    • 鼠標(biāo)移開事件:mouseout
  2. eventData:需要傳遞給事件處理程序的數(shù)據(jù),參數(shù)格式是一個 JSON 對象,例如 {鍵: 值, 鍵: 值...}。

  3. handler:當(dāng)事件觸發(fā)時執(zhí)行的回調(diào)函數(shù)。

  4. bind綁定事件(單個)

    $(選擇器).bind("事件名", function() {
        // 事件處理代碼
    });

bind() 綁定事件語法:

$(selector).bind(eventType[,eventData],handler);
  1. 綁定事件(多個)
方式一:為某一個元素綁定不同的事件,執(zhí)行不同的函數(shù)
$(選擇器).bind("事件名1", function() {
    // 事件處理函數(shù)1
}).bind("事件名2", function() {
    // 事件處理函數(shù)2
});
方式二:為某一個元素綁定不同的事件,執(zhí)行相同的函數(shù)(多個事件用空格隔開)
$(選擇器).bind("事件名1 事件名2", function(event) {
    // 共享的事件處理邏輯
    console.log('觸發(fā)了 ' + event.type + ' 事件');
});
方式三:為某一個元素綁定不同的事件,執(zhí)行不同的函數(shù)(使用JSON對象格式)
$(選擇器).bind({
    "事件名1": function() {
        // 事件處理函數(shù)1
    },
    "事件名2": function() {
        // 事件處理函數(shù)2
    }
});

如何綁定事件

1.事件源:確認(rèn)給什么元素綁定事件,通過不同的選擇獲取對應(yīng)的元素

2.事件類型:給元素綁定什么事件,常用的事件名

3.執(zhí)行函數(shù):當(dāng)事件觸發(fā)時需要執(zhí)行的函數(shù),匿名函數(shù)·或·自定義函數(shù)

  1. on綁定事件(單個)

推薦使用 .on() 方法來綁定事件,而不是 .bind()。下面是使用 .on() 方法的示例:

$(選擇器).on('事件名', [eventData], function(event) {
    // 事件處理代碼
});

示例代碼

// 綁定點擊事件
$('#myButton').on('click', function() {
    console.log('按鈕被點擊了');
});

// 使用 eventData 傳遞額外數(shù)據(jù)
var eventData = { message: 'Hello World' };
$('#myButton').on('click', eventData, function(event) {
    console.log(event.data.message);  // 輸出 "Hello World"
});

這樣不僅使描述更加準(zhǔn)確,還提升了文檔的可讀性和美觀性。它更靈活且是較新版本的標(biāo)準(zhǔn)做法。

3、jQuery的.click()

方法1:直接在JavaScript中使用jQuery的.click()方法綁定事件

這種方法通過外部JavaScript代碼為HTML元素綁定事件處理器。它不僅有助于保持代碼的整潔性,還能使HTML頁面更加簡潔,不包含任何內(nèi)聯(lián)JavaScript代碼。

<!-- HTML部分 -->
<button id="btnA">按鈕A</button>
<button id="btn6">按鈕B</button>

<!-- 確保正確引入jQuery庫 -->
<script src="js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
    // 綁定單個點擊事件到按鈕A
    $("#btnA").click(function(){
        console.log("按鈕A被點擊了...");
    });

    // 為按鈕B同時綁定多個事件(點擊和鼠標(biāo)移出)
    $("#btnB")
        .click(function(){
            console.log("按鈕B被點擊了...");
        })
        .mouseout(function(){
            console.log("鼠標(biāo)從按鈕B移開了...");
        });
</script>

詳細(xì)解釋:

  • $("#btnA"):首先通過jQuery選擇器選中id為btnA的元素。
  • .click(function(){...}):為該元素添加一個點擊事件監(jiān)聽器。當(dāng)用戶點擊按鈕時,控制臺會打印“按鈕A被點擊了…”。
  • 對于#btnB,我們使用了鏈?zhǔn)秸{(diào)用的方式同時綁定了兩個事件處理程序(點擊和鼠標(biāo)移出),這使得代碼更加緊湊和易于閱讀。

方法2:在HTML標(biāo)記中直接使用內(nèi)聯(lián)事件處理程序

盡管這種方法簡單直接,但它混合了內(nèi)容與行為,不利于維護(hù)和擴(kuò)展,因此通常不推薦用于大型項目或復(fù)雜的Web應(yīng)用。

<!-- HTML部分 -->
<button onclick="console.log('按鈕C被點擊了...')">按鈕C</button>

詳細(xì)解釋:

  • onclick="console.log('按鈕C被點擊了...')":直接在HTML標(biāo)簽中定義了一個點擊事件處理器。這意味著每當(dāng)用戶點擊這個按鈕時,都會執(zhí)行console.log('按鈕C被點擊了...')這段JavaScript代碼。

額外提示:

  1. 事件委托:如果需要對動態(tài)加載的內(nèi)容進(jìn)行事件綁定,可以考慮使用事件委托。
   $(document).on('click', '#dynamicBtn', function(){
       console.log('動態(tài)加載的按鈕被點擊了...');
   });
  1. 避免重復(fù)綁定:確保不會多次綁定相同的事件處理函數(shù)給同一個元素,以免觸發(fā)多次相同的行為??梢酝ㄟ^.off()方法解除之前的綁定,或者在綁定之前檢查是否已經(jīng)存在相應(yīng)的事件處理器。

  2. 使用.on()代替.bind()、.click():從jQuery 1.7開始,推薦使用.on()方法作為統(tǒng)一的事件綁定機(jī)制。

   $('#element').on('click', function() {
       console.log('元素被點擊');
   });

Ajax

異步無刷新技術(shù)

原生Ajax的實現(xiàn)流程

  1. 得到XMLHttpRequest對象

    var xhr = new XMLHttpRequest();
    
  2. 打開請求

    xhr.open(method, uri, async);
    
    • method:請求方式,通常是GETPOST
    • uri:請求地址。
    • async:是否異步。如果是true表示異步(推薦),false表示同步。
  3. 發(fā)送請求

    xhr.send(params);
    
    • params:請求時需要傳遞的參數(shù)。
      • 如果是GET請求,則設(shè)置為null(GET請求的參數(shù)應(yīng)包含在URL中)。
      • 如果是POST請求,沒有參數(shù)時設(shè)置為null,有參數(shù)則設(shè)置為參數(shù)內(nèi)容(例如:"name=value&name2=value2")。
  4. 接收響應(yīng)

  • xhr.status:響應(yīng)狀態(tài)
    • 200:表示請求成功。
    • 404:表示資源未找到。
    • 500:表示服務(wù)器內(nèi)部錯誤或其他服務(wù)器端錯誤。

xhr.responseText:得到響應(yīng)結(jié)果

同步請求:

<script type="text/javascript">
    /**
     * 同步請求
     */
    function test01() {
        // 得到XMLHttpRequest對象
        var xhr = new XMLHttpRequest();
        // 打開請求
        xhr.open("GET", "js/data.json", false); // 第三個參數(shù)設(shè)為false表示同步請求
        // 發(fā)送請求
        xhr.send(null);
        // 判斷響應(yīng)狀態(tài)
        if (xhr.status == 200) {
            console.log(xhr.responseText);
        } else {
            console.log("狀態(tài)碼:" + xhr.status + ",原因:" + xhr.responseText);
        }
    }
</script>

異步請求:

/**
 * 異步請求
 */
function test02() {
    // 得到XMLHttpRequest對象
    var xhr = new XMLHttpRequest();
    // 打開請求
    xhr.open("GET", "js/data.json", true); // 第三個參數(shù)設(shè)為true表示異步請求
    // 發(fā)送請求
	xhr.send(null);
	// 判斷響應(yīng)狀態(tài)
	if(xhr.ststus == 200){
            // 獲取響應(yīng)結(jié)果
            console.log(xhr.responseText);
        } else {
            console.log("狀態(tài)碼:" + xhr.status + ",原因:" + xhr.responseText);
        }
    }
}

由于是異步請求,所以需要知道后臺已經(jīng)將請求處理完畢,才能獲取響應(yīng)結(jié)果
通過監(jiān)聽readyState的變化來得知后面的處理狀態(tài) 4= 完全處理
xhr.onreadystatechange = function(){ }

Ajax使用

jquery調(diào)用ajax方法:
格式:$.ajax({});
參數(shù):

  • type:請求方GET/POST
    *url:請求地址url
    async:是否異步,默認(rèn)是true表示異步,false=同步
    data:發(fā)送到服務(wù)器的數(shù)據(jù)
    dataType:預(yù)期服務(wù)器返回的數(shù)據(jù)類型。"JSON"表示將得到的JSON字符串自動封裝成JSON對象
    contentType:設(shè)置請求頭
    *success:請求成功時調(diào)用的函數(shù)(回調(diào)函數(shù))
    error:請求失敗時調(diào)用此函數(shù)
$.ajax({
    type: "GET", // 請求類型,例如:"POST"、"GET"
    url: "js/data.json", // 請求路徑
    data: {
        "paramName1": "value1", // 參數(shù)名:值
        "paramName2": "value2"  // 另一個參數(shù)名:值
    },
    async: true, // 默認(rèn)是true,可以省略
    dataType: "json",
    // dataType: "json", // 文本,字符串

    success: function(response) { // 形參名可以任意 函數(shù)的形參:響應(yīng)結(jié)果
        // 在這里處理成功獲取的數(shù)據(jù)
        console.log(response);
    }
});

發(fā)送請求方式為GET的ajax請求

  1. 發(fā)送請求,無參數(shù),無返回值:
$.get("請求路徑");
  1. 發(fā)送請求,有參數(shù),無返回值:
$.get("請求路徑", "請求參數(shù)");
  1. 發(fā)送請求,無參數(shù),有返回值:
$.get("請求路徑", function(返回結(jié)果) {
    // 處理返回結(jié)果
});
  1. 發(fā)送請求,有返回值,有參數(shù)
$.get("請求路徑", "請求參數(shù)",function(返回結(jié)果) {
    // 處理返回結(jié)果
});
  1. 使用jQuery的$.get()方法發(fā)起一個GET類型的Ajax請求,以加載遠(yuǎn)程數(shù)據(jù)
$.get("js/data.json", {"uname": "zs", "upwd": "123"}, function(data) {
    console.log(data);
});

確保使用標(biāo)準(zhǔn)的英文雙引號"而不是中文引號或任何其他特殊字符。這段代碼將向js/data.json發(fā)送一個GET請求,傳遞unameupwd作為查詢參數(shù),并在請求成功后通過console.log(data)打印服務(wù)器返回的數(shù)據(jù)。

發(fā)送請求方式為POST的ajax請求

  1. 發(fā)送請求,無參數(shù),無返回值:
$.post("請求路徑");
  1. 發(fā)送請求,有參數(shù),無返回值:
$.post("請求路徑", "請求參數(shù)");
  1. 發(fā)送請求,無參數(shù),有返回值:
$.post("請求路徑", function(返回結(jié)果) {
    // 處理返回結(jié)果
});
  1. 發(fā)送請求,有返回值,有參數(shù)
$.post("請求路徑", "請求參數(shù)",function(返回結(jié)果) {
    // 處理返回結(jié)果
});
  1. 使用$.getJSON()方法來得到返回結(jié)果是JSON格式數(shù)據(jù)
$.getJSON("js/data.json", {"uname": "zs", "upwd": "123"}, function(data) {
    console.log(data);
});

這段代碼將會:

  • js/data.json發(fā)送一個GET請求。
  • 傳遞unameupwd作為查詢參數(shù)。
  • 如果請求成功并且服務(wù)器返回的是JSON格式的數(shù)據(jù),則自動解析這個JSON數(shù)據(jù)。
  • 使用console.log(data)打印解析后的對象或數(shù)組(即返回的JSON數(shù)據(jù))。

請確保:

  • URL "js/data.json" 和 參數(shù) {"uname": "zs", "upwd": "123"} 根據(jù)實際情況進(jìn)行替換。
  • 使用英文狀態(tài)下的雙引號和括號,以避免語法錯誤。

這樣就可以正確地利用$.getJSON()來獲取JSON格式的數(shù)據(jù)了。

案例

以下是補(bǔ)充完整的 AJAX 案例代碼,包含必要的 HTML 結(jié)構(gòu)、錯誤處理:

<!DOCTYPE html>
<html>
<head>
    <title>AJAX 數(shù)據(jù)表格示例</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        table {
            width: 80%;
            margin-top: 20px;
            border-collapse: collapse;
        }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        th {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
    <div id="result"></div>

    <script>
        // 發(fā)送 AJAX 請求,獲取數(shù)據(jù)
        $.ajax({
            type: "GET",
            url: "js/user.json",
            dataType: "json", // 明確指定響應(yīng)類型
            data: {
                "name": "aa",
                "pwd": "123"
            },
            success: function(result) {
                console.log("請求成功:", result);
                testData(result);
            },
            error: function(xhr, status, error) { // 新增錯誤處理
                console.error("請求失敗:", status, error);
                $('#result').html('<p style="color: red">數(shù)據(jù)加載失敗,請稍后重試</p>');
            }
        });

        // 數(shù)據(jù)處理函數(shù)
        function testData(data) {
            // 增強(qiáng)數(shù)據(jù)校驗
            if (!data || data.code !== 1 || !Array.isArray(data.list)) {
                console.error("數(shù)據(jù)格式異常:", data);
                $('#result').html('<p style="color: orange">數(shù)據(jù)格式異?;驗榭?lt;/p>');
                return;
            }

            try {
                // 創(chuàng)建表格對象
                const table = $('<table>').addClass('data-table');
                
                // 創(chuàng)建表頭
                const headerRow = $('<tr>').append(
                    $('<th>').text('用戶編號'),
                    $('<th>').text('用戶姓名'),
                    $('<th>').text('注冊時間') // 新增列示例
                );
                $('<thead>').append(headerRow).appendTo(table);
                
                // 創(chuàng)建表格體
                const tbody = $('<tbody>');
                data.list.forEach(function(user) {
                    const row = $('<tr>').append(
                        $('<td>').text(user.id),
                        $('<td>').text(user.name),
                        $('<td>').text(user.registerDate || 'N/A') // 處理可能不存在的字段
                    );
                    tbody.append(row);
                });
                table.append(tbody);

                // 渲染到頁面
                $('#result').empty().append(table);
            } catch (e) {
                console.error("表格渲染失敗:", e);
                $('#result').html('<p style="color: red">數(shù)據(jù)處理異常</p>');
            }
        }
    </script>
</body>
</html>

JSON 數(shù)據(jù)示例 (js/user.json):

{
    "code": 1,
    "message": "success",
    "list": [
        {
            "id": 1001,
            "name": "張三",
            "registerDate": "2023-01-15"
        },
        {
            "id": 1002,
            "name": "李四",
            "registerDate": "2023-02-20"
        }
    ]
}

總結(jié) 

到此這篇關(guān)于jQuery選擇器、DOM與Ajax從入門到應(yīng)用綜合指南的文章就介紹到這了,更多相關(guān)jQuery選擇器、DOM與Ajax內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

察隅县| 昌宁县| 民丰县| 连云港市| 北票市| 成都市| 康定县| 四子王旗| 武定县| 行唐县| 溆浦县| 宜良县| 旅游| 金昌市| 呼伦贝尔市| 南江县| 北京市| 孝感市| 霞浦县| 古丈县| 天峨县| 皮山县| 巴南区| 西昌市| 芒康县| 彭州市| 长治市| 海晏县| 文昌市| 即墨市| 浦江县| 襄城县| 大城县| 祁连县| 长岭县| 奎屯市| 太康县| 乌拉特前旗| 昌平区| 栾川县| 宁夏|