返回文章列表

jQuery 基本用法入门

·2 分钟阅读·#jQuery#基础
目录 (19)

jQuery 基本用法入门

最近在使用jQuery,通过几个常见的业务场景,分享下jQuery常用的API


1. 引入与入口函数

1.1 引入 jQuery

实际项目中最常见的方式,就是在页面底部通过 CDN 引入一个稳定版本的 jQuery:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
  // 页面 DOM 结构准备好之后再执行
  $(function () {
    console.log("jQuery 已就绪");
  });
</script>

这里的 $(function () { ... }) 是一个经典写法,等价于:

document.addEventListener("DOMContentLoaded", function () {
  // ...
});

1.2 $() 的核心思想

$() 做了两件事:

  • 根据选择器找到一批 DOM 节点
  • 把它们“打包”成一个 jQuery 对象,挂上一堆链式 API
// 原生写法:操作标题
var title = document.getElementById("title");
title.innerText = "Hello";
title.style.color = "red";

// jQuery 写法:一行链式调用
$("#title").text("Hello").css("color", "red");

2. 常用选择器:像写 CSS 一样查 DOM

在写静态页面的时候,我们已经熟悉了 CSS 选择器;在 jQuery 里,几乎可以完全照搬:

// 按 id
$("#title");

// 按类名
$(".item");

// 按标签
$("p");

// 层级关系
$("#list li.active"); // list 下当前高亮的项

// 按属性
$('input[type="text"]');
$('.btn[data-role="primary"]');

配合一些“过滤方法”,可以快速精确定位到想要的节点:

// 拿到第一个 / 最后一个
$("#list li").first();
$("#list li").last();

// 按下标取元素(从 0 开始)
$("#list li").eq(2); // 第 3 个 li

// 过滤 / 排除某个类
$("#list li").filter(".active");
$("#list li").not(".disabled");

3. DOM 操作:改内容、调样式、增删节点

3.1 改内容、改属性

// 文本 / HTML 内容
$("#title").text("新的标题");
$("#intro").html("<strong>加粗的一段介绍</strong>");

// 表单的值
$("#username").val("yiyi");
const name = $("#username").val();

// 读 / 写属性
$("#link").attr("href", "https://example.com");
$("#avatar").attr({
  src: "/images/avatar.png",
  alt: "用户头像",
});

// 删除属性
$("#link").removeAttr("target");

3.2 样式与类名

// 设置行内样式
$("#box").css("background", "#000");
$("#box").css({
  color: "#fff",
  "font-size": "14px",
});

// 用 class 做状态切换(推荐)
$("#box").addClass("active");
$("#box").removeClass("active");
$("#box").toggleClass("active");

if ($("#box").hasClass("active")) {
  console.log("当前是激活状态");
}

3.3 插入与删除节点

// 在列表末尾追加一项
$("#todo-list").append("<li>新任务</li>");

// 在最前面插入一项
$("#todo-list").prepend("<li>置顶任务</li>");

// 在某个元素前后插入同级节点
$('<p class="tip">提示信息</p>').insertAfter("#form");
$('<p class="error">错误信息</p>').insertBefore("#form");

// 删除整个节点
$("#ad-banner").remove();

// 只清空内容,不删外层容器
$("#content").empty();

4. 事件:从“一个个绑”到“委托”

4.1 基本事件绑定

// 点击按钮
$("#save-btn").click(function () {
  alert("保存成功");
});

// 通用写法:.on(事件名, 回调)
$("#username").on("focus", function () {
  $(this).addClass("focus");
});

$("#username").on("blur", function () {
  $(this).removeClass("focus");
});

阻止默认行为、拿事件对象也很简单:

$("#login-form").on("submit", function (e) {
  e.preventDefault();
  // 做前端校验 / 发送 Ajax
});

4.2 事件委托:列表型页面的必备

在实际业务里,很多列表项是“后续通过 Ajax 渲染出来的”。
对每个新 li 都重新绑定一次事件,会非常麻烦,也浪费性能。

用“事件委托”的方式,只在父元素上绑一次即可:

// 给 ul 绑定,把事件委托给内部的 li
$("#todo-list").on("click", "li", function () {
  // this 指向被点击的 li
  $(this).toggleClass("done");
});

无论是初始渲染出来的 li,还是后面通过 append 新增的 li,这个事件都会生效。


5. 常见动效:显示、隐藏、淡入淡出

5.1 显示 / 隐藏

// 直接显示 / 隐藏
$("#dialog").show();
$("#dialog").hide();

// 渐隐 / 渐显
$("#dialog").fadeIn(200);
$("#dialog").fadeOut(200);
$("#dialog").fadeToggle(200);

// 向下展开 / 向上收起
$("#panel").slideDown(200);
$("#panel").slideUp(200);
$("#panel").slideToggle(200);

5.2 自定义动画

$("#box").animate(
  {
    left: "200px",
    opacity: 0.5,
  },
  400,
  function () {
    console.log("动画结束");
  },
);

6. Ajax:把页面从“刷新”变成“局部更新”

6.1 $.get / $.post

// GET 请求加载用户信息
$.get("/api/user", { id: 1 }, function (res) {
  $("#nickname").text(res.nickname);
});

// POST 请求提交表单
$.post("/api/login", $("#login-form").serialize(), function (res) {
  if (res.success) {
    location.href = "/dashboard";
  } else {
    alert(res.message || "登录失败");
  }
});

6.2 更灵活的 $.ajax

$.ajax({
  url: "/api/user",
  type: "GET",
  data: { id: 1 },
  dataType: "json",
  timeout: 8000,
  success: function (res) {
    $("#nickname").text(res.nickname);
  },
  error: function (xhr, status) {
    console.error("请求失败:", status);
  },
});

7. jQuery 自带的一些小工具

除了 DOM / 事件 / Ajax,jQuery 还顺手封装了一些实用方法,偶尔非常好用。

// 遍历数组
$.each(["a", "b", "c"], function (index, value) {
  console.log(index, value);
});

// 遍历对象
$.each({ name: "yiyi", age: 18 }, function (key, value) {
  console.log(key, value);
});

// 简单的类型判断
$.isArray([]);
$.isFunction(function () {});

// 合并配置
var defaults = { color: "black", size: "m" };
var custom = { size: "l" };
var options = $.extend({}, defaults, custom);
// => { color: 'black', size: 'l' }

8. 小结:什么时候还值得用 jQuery?

即便今天已经有了 React / Vue / Angular 等前端框架,jQuery 依然在这些场景里表现很合适:

  • 需要维护的老项目,改造成本高,又不值得整体重写
  • 只是一两个传统表单页面,加一点交互和校验
  • 后台系统里,用少量脚本增强现有模板引擎输出的 HTML

推荐一下我最近在看这本书: 《锋利的 jQuery》