jQuery--DOM的节点操作

版权声明:版权声明:本文为博主原创文章,若文章中有错误请联系博主改正,请不要恶意留言(不喜欢请绕道)。欢迎大家转载 https://blog.csdn.net/qq_37674616/article/details/82776976

目录

 

创建节点

添加节点

替换节点

删除节点

清空节点

包裹节点

 遍历节点

属性操作

文本操作

样式操作


创建节点

$(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一个jQuery对象

返回值:该标记的jQuery对象

var $div=$("<div class="one">添加节点</div>");
//创建没有加入节点则还不能显示

添加节点

在元素内插入(插入子元素)

append()

向每个匹配的元素内追加内容

appendTo()

将所有匹配的元素追加到指定的元素中,该方法与append()使用颠倒

prepend()

向每个匹配的元素内部追加前置内容

prependTo()

将所有匹配的元素前置到指定的元素中。

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
</div>
<script>
    $(function(){
            //创建节点
        var $inner=$('<div class="inner">hello</div>');
        //将$inner节点插入到.outer后面
        $('.outer').append($inner);
        //和上面的等价
        $inner.appendTo($('.outer'));
            
           //将$inner节点插入到.outer元素内的最前面(作为第一个子元素)
        $inner.prependTo($('.outer'));
        //和上面的等价
        $('.outer').prepend($inner);
    });

</script>

插入兄弟元素

after()

向每个匹配的元素之后追加内容

insertAfter()

将所有匹配的元素追加到指定的元素后,该方法与append()使用颠倒

before()

向每个匹配的元素的最前面追加内容

insertBefore()

将所有匹配的元素插入到指定元素的最前面。

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
</div>
<script>
    $(function(){
            //创建节点
        var $inner=$('<div class="inner">hello</div>');
        //将$inner节点插入到.outer后面
        $('.outer').after($inner);
        //和上面的等价
        $inner.insertAfter($('.outer'));
            
           //将$inner节点插入到.outer的最前面(作为上个兄弟元素)
        $inner.before($('.outer'));
        //和上面的等价
        $('.outer').insertBefore($inner);
    });

</script>

替换节点

replaceWith()

将所有匹配的元素替换成指定的HTML或者DOM元素。
 replaceAll()

用法与replaceWidth颠倒,作用相同

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
</div>
<script>
    $(function(){
           //创建span标签
        var $span=$('<span>我是一个span</span>');
            //用span替换.outer里的第一个元素
         $('.outer :first').replaceWith($span);
        $span.replaceAll($('.outer:first'));
    });

</script>

删除节点

remove()

作用是从DOM中删除所有匹配的元素

返回值

  返回删除元素的jQuery对象,其中中不包含事件

detach()

作用和remove相同,但返回值的包含原来的绑定事件

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
</div>
<script>
    $(function(){
           //删除 .outer的第一个子元素
           //$result 中没有该元素绑定的事件
         var $result=$('.outer :first-child').remove();
            //$result中包含删除元素之前绑定的事件
         var $result=$('.outer :first-child').detach();
                //给inner绑定事件
            $('.inner').click(function(){
                //this -->inner DOM
                // alert(this.innerHTML);
                alert($(this).html());
            });
    });

</script>

清空节点

 empty()

清空元素中的所有后代节点,该元素还在.而删除节点则将该元素与后代一起删除

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
</div>
<script>
    $(function(){
         $('.outer').empty();
    });

</script>

包裹节点

该方法对于需要在文档中插入额外的结构标记非常有用,而且它不会破坏原始文档的语义。

 wrap()

将所有的匹配的元素进行单独的包裹

innerwrap()

该方法将每一个匹配的元素的子内容用其他结构的标记包裹起来。
wrapAll()

将所有匹配的元素用一个元素来包裹。

<div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
</div>
<script>
    $(function(){
        //创建包裹元素
        var $wrap=$('<div class="wrap"></div>');
           //用$wrap元素包裹每一个.inner里的子内容
        $('.inner').wrapInner($wrap);
    });

</script>

 遍历节点

children()

该方法用于匹配元素的直接子元素集合。

find('span')
            在后代中找符合条件的
closest()
            它用来取得最近的匹配元素。首先检查当前元素是否匹配,如果匹配则直接返回元素本身,如果不匹配则查找父元素,则逐级向上查找直到匹配选择器的元素。如果什么都没找到则返回空jQuery对象

parent()

返回直接父元素。

parents()
            返回所有祖先元素

next()

用于取得匹配元素后面紧邻的同辈元素

nextAll()

用于取得匹配元素后面所有的同辈元素

 prev()

用于取得匹配元素前面紧邻的同辈元素

 prevAll()

用于取得匹配元素前面所有的同辈元素

siblings()

用于取得匹配元素前后所有的同辈元素

filter('span')

//返回div中有'span'标签的
$('div').filter('span')

属性操作

attr(key)
        获取该属性对应的属性值

attr(key,val)

设置属性的值

var $p=$('p');  //获取<p>节点
var p_txt=$p.attr('title'); //获取<p>元素节点属性title
$('p').attr('title','my is a <p>') //设置单个属性值

prop(key,value)
        一个参数
            获取该属性对应的属性值
        两个参数
            设置属性的值
        一般对Boolean属性进行操作

removeAttr(attrName)
        删除属性


$('p').removeAttr('title') //删除<p>元素的属性title

 removeProp(propName)
       一般用于删除自定义的属性

案例:全选和反选

$(function(){
    var $checkbox=$('input[type=checkbox]');
    $('button:first').click(function(){
        $checkbox.prop('checked',true);
	});
    $('button:eq(1)').click(function(){
        $checkbox.prop('checked',function(index,attr){
                return !attr;
        });
    });
});

**:prop与attr不能混搭使用,即用attr设置属性用prop去获取则获取不到。

文本操作

val()
        无参

获取第一元素的value
        有参

设置所有val()
html()

无参

获取所有元素的InnerHtml

有参

设置所有innerHTML
text()
        无参

获取第一元素的innerText

有参

设置所有innerText

样式操作

    
addClass(className)

给选择元素追加class,追加后有过个样式则合并。相同时后者会覆盖前者
removeClass(className)

给指定元素删除class
hasClass(className)

判断是否含有某个样式,有则返回true,否则false

toggleClass(className)

重复切换class类名样式

<head>   
 <script>
    $(function() {
        $('.one').css({
            width: '100px',
            height: '100px',
            border: '1px solid red',
            "font-size": '12px'
        });
        $('button:first').click(function() {
            $('.one').addClass('red');
        });
        $('button:nth-child(2)').click(function() {
            $('.one').removeClass('red');
        });
        $('button:last').click(function() {
            if ($('.one').hasClass('red')) {
                $('.one').removeClass('red');
            } else {
                $('.one').addClass('red');
            }
                //和上面的判断语句等价
            // $('.one').toggleClass('red');
        });

    })
    </script>
</head>

<body>
    <button>添加类</button>
    <button>删除类</button>
    <button>切换类 </button>
    <div class="one"></div>
</body>

猜你喜欢

转载自blog.csdn.net/qq_37674616/article/details/82776976