jQuery 对象与 DOM 对象

介绍jQuery对象与DOM对象的区别,包括两者的特性、方法和使用场景的对比。

jQuery 对象

jQuery 对象是通过 jQuery 包装 DOM 对象后产生的对象。

var $div = $("div");  // jQuery 对象

特点

  • 包装了 DOM 元素的集合
  • 拥有 jQuery 的所有方法
  • 返回值是 jQuery 对象本身
  • 可以使用 jQuery 方法

DOM 对象

DOM 对象是通过原生 JavaScript 获取的元素对象。

var div = document.getElementsByTagName("div");  // DOM 对象

特点

  • 原生的 JavaScript 对象
  • 只能使用原生 JavaScript 方法
  • 不能直接使用 jQuery 方法

区别对比

特性jQuery 对象DOM 对象
获取方式$()原生方法
返回值jQuery 对象DOM 元素
方法jQuery 方法原生方法
索引访问.eq(index)[index]
长度.length.length
遍历.each()for 循环

示例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery 对象与 DOM 对象</title>
<style>
  .container {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
    font-family: Arial, sans-serif;
  }
  .demo-section {
    margin-bottom: 30px;
    padding: 20px;
    background-color: #f8f9fa;
    border-radius: 8px;
  }
  .box {
    width: 150px;
    height: 150px;
    background-color: #3498db;
    color: white;
    text-align: center;
    line-height: 150px;
    border-radius: 8px;
    margin: 10px;
    display: inline-block;
  }
  button {
    padding: 10px 20px;
    margin: 5px;
    background-color: #3498db;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
  }
  button:hover {
    background-color: #2980b9;
  }
  .info-box {
    padding: 15px;
    margin-top: 15px;
    background-color: white;
    border-radius: 5px;
    border: 2px solid #3498db;
  }
</style>
</head>
<body>

<div class="container">
  <h1>jQuery 对象与 DOM 对象</h1>

  <div class="demo-section">
    <h3>对象测试</h3>
    <div class="box" id="box1">盒子 1</div>
    <div class="box" id="box2">盒子 2</div>
    <div class="box" id="box3">盒子 3</div>
    <div>
      <button onclick="testJQueryObject()">jQuery 对象</button>
      <button onclick="testDOMObject()">DOM 对象</button>
    </div>
    <div id="result" class="info-box"></div>
  </div>
</div>

<script>
function testJQueryObject() {
  var $box = $(".box");
  $("#result").html(`
    <p><strong>jQuery 对象:</strong></p>
    <p>类型:${Object.prototype.toString.call($box)}</p>
    <p>长度:${$box.length}</p>
    <p>jQuery 版本:${$box.jquery}</p>
    <p>使用 jQuery 方法:${$box.css('background-color')}</p>
  `);
}

function testDOMObject() {
  var box = document.getElementsByClassName("box");
  $("#result").html(`
    <p><strong>DOM 对象:</strong></p>
    <p>类型:${Object.prototype.toString.call(box)}</p>
    <p>长度:${box.length}</p>
    <p>第一个元素:${box[0].id}</p>
    <p>使用 DOM 方法:${box[0].style.backgroundColor}</p>
  `);
}
</script>

</body>
</html>

总结

理解 jQuery 对象与 DOM 对象的区别非常重要:

  1. jQuery 对象是 DOM 对象的包装
  2. 两者方法不通用
  3. 需要时可以相互转换
  4. 使用时要注意区分