jQuery节点操作

一、插入节点

1.元素内部插入子节点

 

2.元素外部插入同辈节点

 二、删除节点

(1)remove():删除整个节点

(2)empty():清空节点内容

(3)detach():删除整个节点,保留元素的绑定事件、附加的数据

 <ul>
        <li>我是中国人</li>
        <li>我是中国人</li>
        <li>我是中国人</li>
        <li>我是中国人</li>
        <li>我是中国人</li>
    </ul>
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        /* 删除节点 */
        //1.remove():删除整个节点
        // $('ul').remove();
        //2.empty():清空节点内容,但是节点还在
        // $('ul').empty();

        //3.detach()删除整个节点,保留元素的绑定事件/附加的数据

        //ul绑定点击事件
        $('ul').click(function () {
            alert(1)
        })
        //detach()删除节点会返回节点
        var ul = $('ul').detach();
        //将返回值重新插入到body中,此时仍然是有点击事件
        $('body').append(ul);
    </script>

三、替换节点

replaceWith()方法和replaceAll()用于替换某个节点

$(A).replaceWith(B)是表示用B来替换A

$(B).replaceAll(A)是表示用B来替换A

 <ul>
        <li>我是张三</li>
        <li>我是张三</li>
        <li>我是张三</li>
        <li>我是张三</li>
        <li>我是张三</li>
    </ul>
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        $('li').click(function () {
            //this是原生的写法,在jQuery中需要用$(this)
            // $(this).replaceWith("<li>我是飞行员</li>");
            console.log($("<li>我是驾驶员</li>").replaceAll($(this)));
        })
        var img = $('<img>');
        console.log(img);
    </script>

四、复制节点

clone(参数)用于复制某个节点

参数== true时,会将节点的事件处理一起复制。

参数== false 时,不会复制事件,只会复制节点。

五、属性操作

1.删除属性 $(selector).removeAttr(name) ;

2.获取和设置属性

获取属性: $(selector).attr([name]) ;

设置属性:

(1)设置单个属性 $(selector).attr(name:value) ;

(2)设置多个属性的值 $(selector).attr({[name1:value1]…[nameN:valueN]}) ;

<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fdesk.fd.zol-img.com.cn%2Fg5%2FM00%2F02%2F06%2FChMkJlbKymiIG4yQAAEaUR_2JG8AALIbQEMb10AARpp541.jpg&refer=http%3A%2F%2Fdesk.fd.zol-img.com.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1660184008&t=9566c7c11b222567f247321dbed00846"
        alt="">
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        /* 获取和设置元素属性 attr() */
        //给 img 设置属性;
        //1.设置单个属性
        $('img').attr('width', '300px')
        $('img').attr('border', '2px solid #FFF');
        //2.设置多个属性
        $('img').attr({
            'width': '600px',
            'height': '600px',
            title: '我是小兔子'
        })
        //3.获取属性
        $('img').click(function () {
            alert('图片的高度=' + $(this).attr('width'))
        })
        //删除元素属性
        $('img').removeAttr('height')
    </script>

注:prop 方法

用法:$(select).prop("属性") 一般用在表单元素的默认值确认;

如果属性存在,返回true,不存在返回false

而:$(select).attr("属性") 方法,属性存在返回属性值,不存在返回undefined,

适应于自定义属性的读取;

    <a data-name="abc" href="#"></a>
    <input type="checkbox" name="" id="" checked>男
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        /* attr 只适用于元素本身上的属性,比如,img标签本身具有的wigth */
        console.log($('input').attr("checked")); //-->如果有返回checked,没有返回undefined
        //表单元素上的默认属性,用prop比较好用
        console.log($('input').prop("checked")); //存在返回true,不存在返回false
        //attr 适用于自定义属性的读取
        console.log($('a').attr("data-name")); //-->abc
    </script>

六、节点遍历

1.遍历子节点:

children()方法可以用来获取元素的所有子元素

2.遍历同辈元素

(1)next([expr]) 用于获取紧邻匹配元素之后的元素;

(2)prev([expr]) 用于获取紧邻匹配元素之前的元素;

(3)slibings([expr]) 用于获取位于匹配元素前面和后面的所有同辈元素;

<ul>
        <li>我是程序员</li>
        <ul>
            <li class="one">我是中国人</li>
            <li>我是中国人</li>
            <li>我是中国人</li>
        </ul>
        <li>我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员</li>
    </ul>
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        $('li').mouseover(function () {
            $(this).css("background", "pink");
            //$(this).siblings() ,可以获取除匹配元素之外的所有同辈元素
            $(this).siblings().css("background", "#fff")
        })

        //$('ul').children() 方法可以获取所有的子元素
        $('ul').children().css("font-size", "40px")
        //$('li:first').next() 可以获取匹配元素相邻之后的元素(不一定是同类元素)
        $('li:first').next().css("font-weight", "700")
        // $('li:eq(2)').prev() 获取之前的元素
        $('li:eq(2)').prev().css("border", "2px solid red")

    </script>

3.遍历前辈元素

(1)parent():获取元素的父级元素

(2)parents():元素元素的祖先元素

(3)closest(参数),找到参数匹配最近的一个祖先元素就停止,相比parents()在性能上更优

  /* 遍历前辈元素 */
        // 1, parent(): 获取元素的父级元素
        $('.one').parent().css('border', '3px solid red');
        // 2, parents(): 元素元素的祖先元素, 包括html和body
        $('.one').parents().css('border', '3px solid red');
        // 3, closest(参数), 找到参数匹配最近的一个祖先元素就停止, 在性能上更优
        $('.one').closest('ul').css('border', '3px solid red');
        //对比 parents(参数) 方法 会访问所有匹配的前辈元素, 会浪费资源
        $('.one').parents('ul').css('border', '3px solid red');

4.遍历其他方法:

(1)each( ) :规定为每个匹配元素规定运行的函数

 <ul>
        <li>我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员</li>
    </ul>
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        //each()方法;规定为每个匹配元素规定运行的函数
        //$(selector).each(function(index,ele)) ;
        //ele 是指的原生的元素
        $(function () {
            $('li').each(function (index, ele) {
                var str = $(this).text() + index;
                $(this).html(str)
            })
        })
    </script>

(2)$(select).find(参数) 方法:

在select 父元素中找到匹配参数的子孙元素,在select之外的不会被选中;

而通过类选中器选中的是所有符合的元素;

<body>
    <div>
        <div class="two">我是程序员</div>
    </div>
    <ul>
        <li>我是程序员</li>
        <li class="two">我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员</li>
        <li>我是程序员
            <ol>
                <li>我是程序员</li>
                <li class="two">我是程序员</li>
                <li>我是程序员</li>
                <li>我是程序员</li>
                <li>我是程序员</li>
            </ol>
        </li>
    </ul>
    <script src="http://code.jQuery.com/jQuery-2.1.1.min.js"></script>
    <script>
        //在 ul 父元素中找到含有class 为two的子孙元素, 在ul 外不会选中;
        // $('ul').find('.two').css("border", "2px solid red")
        $('.two').css("border", "2px solid red")

注:

1.字符串拼接模板:

可以将所有的内容直接用字符串拼接的方法,放入父元素;

let str = '<li>' +
                '<img src=' + arr[num] + ' class="img1">' +
                '<div class="div1">' +
                '<p class="p1"> ' + $('#title').val() + '</p>' +
                '<p class="p2">' +
                '<span class="text1">板块:' + $('#sec').val() + '</span>' +
                '发表时间:' + timer +
                ' </p>' +
                ' </div>' +
                ' </li>';
$('#postList').prepend(str)

2.es6字符串模板,``包裹字符串,${变量}

  let str2 = `
            <li>
                <img src= ${arr[num]} class="img1">
                    <div class="div1">
                        <p class="p1">${$('#title').val()}</p>
                        <p class="p2"><span class="text1">板块:${$('#sec').val()}</span>发表时间:${timer} </p>
                    </div>
                </li>
            `
  $('#postList').prepend(str2)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值