欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jquery中的DOM操作

程序员文章站 2022-05-04 11:41:48
...

目录

1.查找节点

2.创建节点

3.插入节点

4.案例一

4.删除元素

5.复制节点

6.替换节点

7.包裹节点

8.HTML代码/文本/值

9.样式操作

10.CSS-DOM操作

1.查找节点

  • 查找属性节点: 通过 jQuery 选择器完成

  • 操作属性节点: 查找到所需要的元素之后, 可以调用 jQuery 对象的 attr() 方法来获取它的各种属性值

  • 操作文本节点:通过 text() 方法

2.创建节点

  • 使用 jQuery 的工厂函数 ​(html); 会根据传入的 html 标记字符串创建一个 DOM 对象, 并把这个 DOM 对象包装成一个 jQuery 对象返回

  • 注意

    • 动态创建的新元素节点不会被自动添加到文档中, 而是需要使用其他方法将其插入到文档中

    • 当创建单个元素时, 需注意闭合标签和使用标准的 XHTML 格式. 例如创建一个<p>元素, 可以使用 或​(“<p></p>”), 但不能使用 或​(“<P>”)

  • 创建文本节点就是在创建元素节点时直接把文本内容写出来; 创建属性节点也是在创建元素节点时一起创建

3.插入节点

方法 描述
append() 向每个匹配的元素的内部的结尾处追加内容
appendTo() 将每个匹配的元素追加到指定的元素中的内部的结尾处
prepend() 向每个匹配元素的内部的开始处插入内容
prependTo() 将每个匹配的元素插入到指定的元素中的内部的开始处
after() 向每个匹配的元素的之后插入内容
insertAfter() 向每个匹配的元素的插入到指定的元素之后
before() 向每个匹配的元素的之前插入内容
insertbefore() 向每个匹配的元素的插入到指定的元素之前
  • 以上方法不但能将新创建的 DOM 元素插入到文档中, 也能对原有的 DOM 元素进行移动

        <p>你喜欢哪个城市?</p>
        <ul id="city">
            <li id="bj">北京</li>
            <li id="sh">上海</li>
            <li id="dj">东京</li>
            <li id="se">首尔</li>
        </ul>
        <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
        <script type="text/javascript">
          $(function(){
            <!-- 将太原的节点插入到city标签内部的结尾处 -->
            $("<li id='ty'>太原</li>").appendTo($("#city"));  
            <!-- $("#city").append("<li id='ty'>太原</li>"); -->
              
            <!-- 将成都的节点插入到city标签内部的开始处 -->
            $("<li id='cd'>成都</li>").appendTo($("#city"));  
            <!-- $("#city").prepend("<li id='cd'>成都</li>"); -->
          }
        </script>

4.案例一

    <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        
        //需求: 点击 submit 按钮时, 检查是否选择 type, 若没有选择给出提示: "请选择类型"; 
        //     检查文本框中是否有输入(可以去除前后空格), 若没有输入,则给出提示: "请输入内容";
        //若检查都通过, 则在相应的 ul 节点中添加对应的 li 节点 
    
        //需求2: 使包括新增的 li 都能响应 onclick 事件: 弹出 li 的文本值. 
        
        $(function(){
            <!-- 弹出对应标签的文本内容 -->
            function showContent(li){
                alert($(li).text());
            }
            
            <!-- 给现有的li标签赋onclick事件 -->
            $("li").click(function(){
                showContent(this);
            })
​
            $(function(){
                $(":submit").click(function () {
                    <!-- 检查是否选择type -->
                    var $type=$(":radio[name='type']:checked");
                    if($type.length==0){
                        alert("请选择类型");
                        return false;
                    }
                    <!-- 检查是否有输入(去除前后空格) -->
                    var text=$(":text").val();
                    text=$.trim(text);
                    if(text==""){
                        alert("请输入内容");
                        return false;
                    }
                    <!-- 在相应的 ul 节点中添加对应的 li 节点,并添加click事件 -->
                    $("<li>"+text+"</li>").appendTo("#"+$type.val()).click(function(){showContent(this)});
                    return false;
                })
​
            })
        })  
    </script>
</head>
<body>
​
    <p>你喜欢哪个城市?</p>
    
        <ul id="city">
            <li id="bj">北京</li>
            <li>上海</li>
            <li>东京</li>
            <li>首尔</li>
        </ul>
        
        <br><br>
        <p>你喜欢哪款单机游戏?</p>
        <ul id="game">
            <li id="rl">红警</li>
            <li>实况</li>
            <li>*飞车</li>
            <li>魔兽</li>
        </ul>
        
        <br><br>
        
        <form action="ex-3.html" name="myform">
            
            <input type="radio" name="type" value="city">城市
            <input type="radio" name="type" value="game">游戏
        
            name: <input type="text" name="name"/>
        
            <input type="submit" value="Submit" id="submit"/>
            
        </form>
</body>

4.删除元素

方法 描述
remove() 从DOM中删除所有匹配的元素,即该节点及其对应的子节点
empty() 删除匹配的元素集合中所有的子节点
<!-- 删除bj节点及其所有子节点 -->
$("bj").remove();
<!-- 删除city节点的所有子节点,city节点不会被删除  -->
$("#city li").empty();
​
        <ul id="city">
            <li id="bj">北京</li>
            <li>上海</li>
            <li>东京</li>
            <li>首尔</li>
        </ul>

5.复制节点

方法 描述
clone() 复制匹配的 DOM 元素,新节点不具有任何行为
clone(true) 复制元素的同时也复制元素中的的事件

6.替换节点

方法 描述
replaceWith(content|fn) 将所有匹配的元素替换成指定的HTML或DOM元素
replaceAll(selector) 用匹配的元素替换掉所有 selector匹配到的元素
        <p>你喜欢哪个城市?</p>
        <ul id="city">
            <li id="bj" name="BeiJing">北京</li>
            <li>上海</li>
            <li id="dj">东京</li>
            <li id="se">首尔</li>
        </ul>
        
        <br><br>
        <p>你喜欢哪款单机游戏?</p>
        <ul id="game">
            <li id="rl">红警</li>
            <li>实况</li>
            <li>*飞车</li>
            <li>魔兽</li>
        </ul>
​
​
        <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
        <script type="text/javascript">
            <!-- 替换北京节点和红警节点
                    注意:replaceWith , replaceAll有移动节点的功能,节点互换需要先克隆节点 
             -->
            $(function(){
                <!-- 复制北京节点 -->
                var $bj=$("#bj").clone(true);
                <!-- 将红警节点替换为北京节点,返回红警节点 -->
                var $rl=$("#rl").replaceWith($bj);
                <!-- 将北京节点替换为红警节点 -->
                $("#bj").replaceWith($rl);
            })
        </script>

7.包裹节点

方法 描述
wrap() 把所有匹配的元素用其他元素的结构化标记包裹起来
wrapAll() 将所有匹配的元素用单个元素包裹起来
wrapInner() 将每一个匹配的元素的子内容(包括文本节点)用一个HTML结构包裹起来

8.HTML代码/文本/值

方法 描述
html() 取得第一个匹配元素的html内容。不能用于XML
text() 取得所有匹配元素的内容。这个方法对HTML和XML文档都有效
val() 获得匹配元素的当前值。如果为多选下拉列表框, 则返回一个包含所有选择值的数组

9.样式操作

方法 描述
attr() 获取 class 和设置 class
addClass() 追加样式
removeClass() 移除样式
toggleClass() 切换样式
hasClass() 判断是否含有某个样式

10.CSS-DOM操作

方法 描述
css() 获取和设置元素的样式属性
opacity 属性 获取和设置元素透明度
height(), width() 获取和设置元素高度
offset() 获取可见元素在当前视窗中的相对位移。其返回对象包含了两个属性: top, left