# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。