DOM 是 Document Object Model 的缩写,译为 **文档对象模型**。根据 W3C DOM 规范,DOM 是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组件。 jQuery 中另一个重要的组成部分就是封装了原生 DOM 的操作。 ## 基本操作 ### html操作 html() 方法用于读取或设置指定元素的 HTML 代码,类似于原生 DOM 中的 innerHTML 属性。 ```javascript //获取
元素的HTML代码 $("input:eq(0)").click(function(){ alert( $("p").html() ); }); //设置
元素的HTML代码 $("input:eq(1)").click(function(){ $("p").html("你最讨厌的水果是?"); }); ``` ### 文本操作 text() 方法用于读取或设置指定元素的文本内容,类似于原生 DOM 中的 textContent 属性。 ```javascript //获取
元素的文本 $("input:eq(0)").click(function(){ alert( $("p").text() ); }); //设置
元素的文本 $("input:eq(1)").click(function(){ $("p").text("你最讨厌的水果是?"); }); ``` ### 值操作 val() 方法用于读取或设置指定元素的 value 属性值,类似于原生 DOM 中的 value 属性。 ```javascript //获取按钮的value值 $("input:eq(0)").click(function(){ alert( $(this).val() ); }); //设置按钮的value值 $("input:eq(1)").click(function(){ $(this).val("我被点击了!"); }); ``` ### 属性操作 - attr() 方法用于获取或设置指定元素的属性,类似于原生 DOM 中的 getAttribute() 方法和 setAttribute() 方法。 - removeAttr() 方法用于删除指定元素的属性,类似于原生 DOM 中的 removeAttribute() 方法。 ```javascript //设置
元素的属性'title' $("input:eq(0)").click(function(){ $("p").attr("title","选择你最喜欢的水果."); }); //获取
元素的属性'title' $("input:eq(1)").click(function(){ alert( $("p").attr("title") ); }); //删除
元素的属性'title' $("input:eq(2)").click(function(){ $("p").removeAttr("title"); }); ``` ## 样式操作 操作样式主要分成两种: - 一种是使用style属性直接设置CSS中的属性 - 一种是使用class样式名称设置CSS。 ### attr() 方法操作 class 本身就是元素中的一个属性,所以也可以使用设置属性方式来设置或删除 class 样式。 **语法结构:** ```javascript element.attr("class",className) ``` > **值得注意的是:** 使用 attr() 方法设置 class 样式时,无论之前是否包含 class 属性,之前设置的样式都会被覆盖。 ```javascript // $("#b1").click(function(){ $("#mover").attr("class","one"); }) ``` ### addClass() 方法操作 addClass() 方法表示追加样式,也就是说,无论之前是否包含 class 样式,调用 addClass() 方法只是在其基础上增加一个新的样式。而之前设置的样式依旧存在。 ```javascript // $("#b2").click(function(){ $("#mover").addClass("mini"); }) ``` ### removeClass() 方法操作 removeClass() 方法表示删除样式,但该方法的使用有以下三种方式: - removeClass(): 默认不传递任何参数,表示删除所有样式。 - removeClass(className): 传递一个样式名称,表示删除指定一个样式。 - removeClass(className1 className2): 传递多个样式名称,中间使用空格隔开,表示删除指定多个样式。 ```javascript // $("#b3").click(function(){ $("#mover").removeClass(); }) ``` ### toggleClass() 方法操作 toggleClass() 方法表示在没有样式与指定样式之间进行切换,效果相当于使用 addClass() 方法和 removeClass() 方法。 ```javascript // $("#b4").click(function(){ // 在没有样式与指定样式之间切换 $("#mover").toggleClass("one"); }) ``` ### hasClass() 方法操作 hasClass() 方法表示指定元素是否包含指定样式。 > **值得注意的是:** hasClass() 方法并不能判断是否包含样式,而是判断是否包含指定样式。 ```javascript // $("#b5").click(function(){ // 判断是否含有某个指定样式 alert($("#mover").hasClass("one")); }) ``` ### css() 方法操作 css() 方法也可以获取或设置 CSS 样式,但并不是通过 class 属性,而是通过 style 属性直接设置 CSS 中的属性。 #### 获取样式: css(attrName) 方法,用于获取当前 style 属性的值。 #### 设置样式: - css(attrName,attrValue) 方法,用于设置当前 style 属性的值。**但每次只能设置一个CSS中的属性。** - css({attrName:attrValue,attrName:attrValue,…}) 方法,用于设置当前 style 属性的值。**每次可以设置多个CSS中的属性。** ## 遍历节点 ### 获取父元素 parent() 方法可以获取指定元素的父元素。 - parent() 方法: 不传递任何参数,是获取指定元素的父元素。 - parent(selector) 方法: 是获取指定元素的符合 selector 选择器的父元素。 ```javascript var $parent = $("li:first").parent(); //第一个
元素下有3个子元素 ``` ### 获取兄弟元素 **next() 方法是获取指定元素的下一个兄弟元素。** - next() 方法: 不传递任何参数,是获取指定元素的下一个兄弟元素。 - next(selector) 方法: 是获取指定元素符合 selector 选择器的下一个兄弟元素。 ```javascript var $p1 = $("p").next(); alert( $p1.html() ); // 紧邻
元素后的同辈元素 ``` **prev() 方法是获取指定元素的上一个兄弟元素。** - prev()方法: 不传递任何参数,是获取指定元素的上一个兄弟元素。 - prev(selector) 方法: 是获取指定元素符合 selector 选择器的上一个兄弟元素。 ```javascript var $ul = $("ul").prev(); alert( $ul.html() ); // 紧邻
元素的唯一同辈元素 ``` ### 查找指定后代元素 find(selector) 方法,可以查找指定元素的符合 selector 选择器的后代元素。 ```javascript var eles = $("ul").find("li"); //查找ul元素下的所有li元素 ``` ## 创建操作 按照原生 DOM 的思路,创建节点需要分别创建元素节点、文本节点和属性节点。 - 元素节点,使用 jQuery 的工厂函数 `$(HTML代码)` 来创建。 - 文本节点,使用 jQuery 的 `text()` 方法进行设置文本,而不需要创建文本节点。 - 属性节点,使用 jQuery 的 `attr()` 方法进行设置属性,而不需要创建属性节点。 其实,使用 jQuery 创建元素,并不需要按照原生 DOM 的思路进行创建。可以一步代码创建完整的元素。 ```javascript //创建一个