jQuery函数操作汇总~节点角度

关于DOM节点常用操作共有7种:
//节点:包括标签、内容

(1)创建节点;
(2)插入节点;
(3)删除节点;
(4)复制节点;
(5)替换节点;
(6)包裹节点;
(7)遍历节点;

(一)创建节点

var e = $("<li>CSDN博客</li>");或var $e = "<li>CSDN博客</li>";
$().append(e);
//类似于$().html();但又不同于html()
    区别:html()会覆盖原来内容,而append()是添加,不会覆盖原来的内容
//注意var $e = "<li>CSDN博客</li>";这里的$e只是一个命名规范,可以起任意名字,即var csdn = "<li>CSDN博客</li>";这样也对
//注意再写复杂的节点的时候:
因为添加进去的是一个字符串,所以会涉及到单双引号的问题
“单引号为最外层的字符串内部出现双引号”或“双引号为外层的字符串内部出现单引号”时,不需要进行转义。内部的双引号或者单引号就自动转义了,即在显示屏上显示的就是字符串内部的单或双引号。但是,“单引号内出现单引号”或“双引号内出现双引号”则必须进行转义

(二)插入节点

常见插入节点的方法共有4组:

(1)append()和appendTo();
(2)prepend()和prependTo();
//(1)(2)属于“内部插入节点”
(3)before()和insertBefore();
(4)after()和insertAfter();
//(3)(4)属于“外部插入节点”
/*******************************************/
插入标签内部:
(1)append()和appendTo();
    {
        $(A).append(B)
        //表示在A的内部的末尾添加B
        $(A).appendTo(B)
        //表示将A加入到B的内部的末尾
        //注意,虽然上面两种方法差不多,但是,选择器的绑定位置变了
        即:$("#id").append("<li>CSDN</li>");与$("<li>CSDN</li>").appendTo("#id");
    }
(2)prepend()和prependTo()
    {
        $(A).prepend(B)
        //表示在A的内部的开始部分添加B
        $(A).prependTo(B)
        //表示在B的内部的开始部分添加A
        //注意,虽然上面两种方法差不多,但是,选择器的绑定位置变了
        即:$("#id").prepend("<li>CSDN</li>");与$("<li>CSDN</li>").prependTo("#id");
    }
插入到标签外面:
(3)before()和insertBefore()
    {
        $(A).before(B)
        //表示在A这个标签的外部的前面添加B
        $(A).insertBefore(B)
        //表示将A添加到B这个标签的外部的前面
        //注意:虽然这两种方法差不多,但是,选择器的绑定位置变了
        即:$("#id").before("<li>csdn</li>");与$("<li>csdn</li>").insertBefore("#id");
    }
(4)after()和insertAfter()
    {
        $(A).after(B)
        //表示在A标签的外部的后面添加B
        $(A).insertAfter(B)
        //表示将A添加到B标签的外部的后面
        //注意:虽然这两种方法差不多,但是,选择器的绑定位置变了
        即:$("#id").after("<li>csdn</li>");与$("<li>csdn</li>").insertAfter("#id");
    }
//综上:以上函数可以分为完全等价的两组    
即:
//第1组//A添加B
append()、prepend()、before()、after()
//第2组//B添加到A
appendTo()、prependTo()、insertBefore()、insertAfter()

//小技巧:实现定点插入
{
在一个列表中实现定点插入:
即:

<ul>
    <li></li>
    <li></li>
</ul>   
实现在第一个li后面添加元素
首先用append或prepend肯定不行,因为他们的插入位置是固定的最前面和最后面
用after和before可以,因为他们的意思是在绑定的选择器之前或之后插入
所以想要实现定点插入,只需要绑定所需要插入的标签的位置即可
即:$("ul li:first-child").after("<li>CSDN</li>");
这样就可以实现定点插入咯

}
(三)删除节点

删除节点,有3种方法:

(1)remove();
(2)detach();
(3)empty();
/********************************************/
(1)remove()
    {
        remove()方法将某个节点彻底删除。
        $(A).remove()
        //返回值为删除的jQuery节点对象
    }
(2)detach()
    {
        detach()方法将某个节点半彻底删除
        $(A).detach()
        //返回值为删除的jQuery节点对象
    }
    //区分remove()和detach()
    如果一个节点绑定了一个点击事件,那么remove()是将这个节点的所有全部删除,即其所绑定的事件也被删除,即使
                //删除“jQuery”这一个li元素
                var $li = $("#id").remove();
                //将删除的li元素在添加到ul元素内部的末尾
                $($li).appendTo("#id");
      像上面这个样子又将节点添加回去,其所绑定的点击事件也没有了
      但是如果这样子
                //删除“jQuery”这一个li元素
                var $li = $("#id").detach();
                //将删除的li元素在添加到ul元素内部的末尾
                $($li).appendTo("#id");
      这样子的话将节点添加回去,其绑定的点击事件是可以使用的,即其绑定的事件并没有被删除
(3)empty()
     {
         “清空”某个节点,是清空不是删除
         $(A).empty()
         //返回值为清空的jQuery节点对象
         //但是这个返回值不能像remove()与detach()的返回值似的用$().after()在装填回去
         //此返回值不能用来装填回去
         //如果想要装填回去,只能装填原来的源代码,用append()或html()方法
     }
     //区分清空和删除
     清空是清空标签内部所有,标签本身还是存在的,并且绑定的事件没有被删除
     删除是把包括标签在内的所有全部删除,其中remove()会把时间删除,detach()不会删除事件

(四)复制节点

$(A).clone()
//clone()方法有一个布尔参数,默认值为false。

$(A).clone()表示仅仅将A节点复制,但不复制A节点所绑定的事件。

$(A).clone(true)表示将A节点复制,并且复制A节点所绑定的事件。

//var obj=$(A).clone()//返回值是一个对象,可作为那些append(obj)等中的obj信息

(五)替换节点

有2种方法:

(1)replaceWith();
(2)replaceAll();
/*******************************************/
(1)replaceWith()
    {
        replaceWith()方法可以将所选元素被替换成其他元素。
        $(A).replaceWith(B)
        //表示用B来替换A、
        这个替换会将A中原来所有信息全部替换,相当于重置了html,即替换标签的外层使用一个html()函数
    }
(2)replaceAll()
    {
        replaceAll()方法可以将所选元素被替换成其他元素。
        $(A).replaceAll(B)
        //表示用A来替换B
    }
    //以上两种方法是等价的,不同的是选择器的位置不一样而已
    //如果在替换节点之前,我们已经为元素绑定事件了,使用replaceWith()或replaceAll()之后,该元素所绑定的事件会消失。因此我们如果想要保留事件的话,则需要在新元素上重新绑定事件。

(六)包裹节点
将某个节点用其他标签包裹起来,共有3种方法:(所谓包裹,就是在其外层或内层嵌套一个其他标签,这样看上去,就好像被包裹了一样)

(1)wrap();
(2)wrapAll();
(3)wrapInner();
/****************************************/
(1)wrap()
    {
        $(A).wrap(B)
        //表示将A元素使用B元素包裹起来。
        //例:
        $("strong").wrap("<em></em>")
        //注意选择器与内容的书写方式
    }
(2)wrapAll()
    {
        $(A).wrapAll(B)
        //表示将A元素整体使用B包裹起来
        //例:
        $("strong").wrapAll("<div></div>")
    }
//wrap()与wrapAll()的区别
wrap()是将每一个标签一个个单独用一个标签包裹起来,并不打乱布局
wrapAll()是将所有要包裹的标签汇总后,然后用一个标签包裹起来,即,脱离了文档流布局
(3)wrapInner()
    {
        wrapInner()方法表示将所选元素“所有内部元素”使用某个标签包裹起来。
        $(A).wrapInner(B)
        //将A的内部的所有内容用B包裹起来,但B不包裹A
        //例:
        $("strong").wrapInner("<em></em>")
    }
//wrap()与wrapInner()方法的关系类似于append()与after()方法的关系

(七)遍历节点
在JavaScript中,我们往往都是先获取元素的长度,然后使用循环语句来访问每一个元素,代码相对复杂。
而在jQuery中,我们可以使用each()方法来轻松实现元素的遍历操作。

$().each(callback)
//注意:参数callback是一个function函数。该函数可以接受一个形参index,此形参为遍历元素的序号(从0开始)。如果需要访问元素中的属性,可以借助形参index,然后配合this关键字来实现元素属性的获取和设置。
即:完整形式是:
$().each(function(index){
      /**函数体**/
})
例:
 $("li").each(function (index) {
        var txt = "这是第" + (index + 1) + "个li元素";
         $(this).text(txt);
     });
     //index只是起到了一个显示下标的作用,真正在遍历中对每一项进行操作的是this指针,在函数执行的过程中,index是变化的,每一个this对应于每一个以index为下标的项

猜你喜欢

转载自blog.csdn.net/qq_42127861/article/details/82026339