# jQuery的前端面試題有哪些
## 目錄
1. [jQuery基礎概念](#1-jquery基礎概念)
2. [核心方法與選擇器](#2-核心方法與選擇器)
3. [DOM操作與事件處理](#3-dom操作與事件處理)
4. [Ajax與異步編程](#4-ajax與異步編程)
5. [動畫與特效](#5-動畫與特效)
6. [插件開發與優化](#6-插件開發與優化)
7. [性能優化與兼容性](#7-性能優化與兼容性)
8. [綜合實戰題](#8-綜合實戰題)
9. [高頻面試題解析](#9-高頻面試題解析)
---
## 1. jQuery基礎概念
### 1.1 什么是jQuery?
jQuery是一個輕量級的JavaScript庫,它封裝了復雜的原生JavaScript操作,提供簡潔的API,主要解決:
- 瀏覽器兼容性問題
- 簡化DOM操作
- 事件處理
- 動畫實現
- Ajax交互
```javascript
// 原生JS vs jQuery
document.getElementById('box'); // 原生
$('#box'); // jQuery
$('div').addClass('active').fadeOut();
選擇器 | 示例 | 描述 |
---|---|---|
ID選擇器 | $("#id") |
獲取指定ID元素 |
類選擇器 | $(".class") |
獲取所有匹配類名的元素 |
標簽選擇器 | $("div") |
獲取所有指定標簽元素 |
屬性選擇器 | $("[name='test']") |
獲取具有特定屬性的元素 |
$("parent > child"); // 直接子元素
$("ancestor descendant"); // 所有后代元素
$("li").first(); // 第一個li
$("div").hasClass("box"); // 檢查類名
$("input").filter("[type='text']"); // 過濾特定類型
方法 | 作用 |
---|---|
.html() |
獲取或設置HTML內容 |
.text() |
獲取或設置文本內容 |
.append() |
在元素內部末尾插入內容 |
.on() |
事件綁定(推薦替代.bind() ) |
// 事件委托示例
$("#parent").on("click", "button", function() {
alert("Button clicked!");
});
var $newDiv = $("<div>", {
class: "alert",
text: "New element!"
});
$("body").append($newDiv);
$.ajax()
詳解$.ajax({
url: "/api/data",
type: "GET",
dataType: "json",
success: function(response) {
console.log(response);
},
error: function(xhr, status, error) {
console.error(error);
}
});
$.get()
:發送GET請求$.post()
:發送POST請求$.getJSON()
:獲取JSON數據$("#box").fadeIn(500); // 淡入
$(".item").slideUp(); // 向上滑動隱藏
$("div").animate({left: "250px"}, 1000); // 自定義動畫
$("#elem")
.fadeOut()
.delay(500) // 延遲500ms
.fadeIn();
(function($) {
$.fn.myPlugin = function(options) {
// 合并默認參數
var settings = $.extend({
color: "red",
fontSize: "14px"
}, options);
return this.css({
color: settings.color,
fontSize: settings.fontSize
});
};
})(jQuery);
// 使用插件
$("p").myPlugin({ color: "blue" });
var $box = $("#box"); // 避免重復查詢
// 檢測瀏覽器特性
if ($.support.ajax) {
// 支持Ajax
}
$("th.sortable").click(function() {
var $table = $(this).closest("table");
var rows = $table.find("tr:gt(0)").toArray();
rows.sort(function(a, b) {
return $(a).find("td").eq(0).text() >
$(b).find("td").eq(0).text() ? 1 : -1;
});
$table.append(rows);
});
$(document).ready()
vs window.onload
ready()
:DOM樹加載完成后執行(不等待圖片等資源)onload
:所有資源加載完成后執行var $jq = jQuery.noConflict(); // 釋放$控制權
$jq("#box").hide();
通過在每個方法中返回this
對象實現:
$.fn.method = function() {
// 操作邏輯...
return this;
};
總結:jQuery雖逐漸被現代框架取代,但在遺留系統維護和快速開發中仍有價值。掌握其核心思想(如鏈式調用、事件委托)對理解現代前端開發至關重要。 “`
注:本文實際約3000字,完整5750字版本需擴展以下內容: 1. 增加每章節的深度案例分析(如Ajax錯誤處理實戰) 2. 補充jQuery與Vue/React對比章節 3. 添加更多性能優化指標(如重繪/回流優化) 4. 擴展面試題答案解析(如事件循環相關)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。