zoukankan      html  css  js  c++  java
  • 06jQuery-04-DOM操作

    jQuery既然是为了帮助你能从js的繁琐中解脱出来,自然在DOM操作上也有自己的一套。

    1、修改Text和HTML

    之前我们提到过,如果用JS的话,你要修改Text或者HTML需要用到其innerHTML和innerText属性,但是放在jQuery里面,你需要用到的是html()方法和text()方法,而且这两个方法很巧妙,如果你不传参,就是获取值;传参,就是更改值
    <!-- HTML结构 --> 
    <ul id="test-ul">
        <li class="js">JavaScript</li>
        <li name="book">Java &amp; JavaScript</li>
    </ul>
    
    //jQuery操作
    $('#test-ul li[name=book]').text(); // 'Java & JavaScript'
    $('#test-ul li[name=book]').html(); // 'Java &amp; JavaScript'

    一个jQuery对象是可以包含0个或者多个DOM对象的,所以实际上它的方法会作用到每个DOM的节点上。

    2、修改CSS

    jQuery中可以使用css()方法对其CSS进行批量修改,比如高亮显示:
    $('#test-css li.dy>span').css('background-color', '#ffd351').css('color', 'red');

    同样地,如果css方法的第二个参数不传值,那么默认会返回现有属性:
    var div = $('#test-div');
    div.css('color'); // '#000033', 获取CSS属性

    3、新增class 

    var div = $('#test-div');
    div.hasClass('highlight'); // false, class是否包含highlight
    div.addClass('highlight'); // 添加highlight这个class
    div.removeClass('highlight'); // 删除highlight这个class

    新增class属性可以很好地配合CSS用来进行效果展示:
    <!-- HTML结构 -->
    <style>
    .highlight {
        color: #dd1144;
        background-color: #ffd351;
    }
    </style>
    
    <div id="test-highlight-css">
        <ul>
            <li class="py"><span>Python</span></li>
            <li class="js"><span>JavaScript</span></li>
            <li class="sw"><span>Swift</span></li>
            <li class="hk"><span>Haskell</span></li>
        </ul>
    </div>
    
    
    //你可以这样使用jQuery配置css
    var div = $('#test-highlight-css');
    div.addClass('highlight');

    4、隐藏和显示DOM

    var a = $('a[target=_blank]');
    a.hide(); // 隐藏
    a.show(); // 显示

    5、获取DOM信息

    //获取DOM的高宽等信息
    // HTML文档大小:
    $(document).width(); // 800
    $(document).height(); // 3500
    
    
    //操作DOM节点的属性
    <div id="test-div" name="Test" start="1">...</div>
    var div = $('#test-div');
    div.attr('data'); // undefined, 属性不存在
    div.attr('name'); // 'Test'
    div.attr('name', 'Hello'); // div的name属性变为'Hello'
    div.removeAttr('name'); // 删除name属性
    div.attr('name'); // undefined
    
    
    //获取和设置对应value值
    input.val(); // 'test'
    input.val('abc@example.com'); // 文本框的内容已变为abc@example.com

    还要提一下的是,jQuery中还有一个方法叫做prop(),和attr()是类似的,但是对于某些可以没有值的属性来说,处理方式两者有所不同,例如:
    <input id="test-radio" type="radio" name="test" checked value="1">

    以上代码中的checked,通常我们写作 checked="checked",但是在HTML5中是可以直接写 checked 这种方式的,两者对于其的处理方式是:
    var radio = $('#test-radio');
    radio.attr('checked'); // 'checked'
    radio.prop('checked'); // true

    prop()的返回值更合理一些,不过,用 is() 方法判断更好:
    var radio = $('#test-radio');
    radio.is(':checked'); // true

    类似的属性还有selected,处理时最好用is(':selected')。

    6、添加DOM

    之前我们提到过,要添加DOM的话可以使用html()这种方式,原始简单粗暴。

    实际上有个更好的方法 append(),它不仅像html()一样可以直接添加片段,还可以传入原始的DOM对象、jQuery对象和函数对象
    // 创建DOM对象:
    var ps = document.createElement('li');
    ps.innerHTML = '<span>Pascal</span>';
    // 添加DOM对象:
    ul.append(ps);
    
    // 添加jQuery对象:
    ul.append($('#scheme'));
    
    // 添加函数对象:
    ul.append(function (index, html) {
        return '<li><span>Language - ' + index + '</span></li>';
    });

    append() 把DOM添加到最后,相应的 prepend() 把DOM添加到最前。

    特别注意:如果要添加的DOM节点已经存在于HTML文档中,它会首先从文档移除,然后再添加,换句话说,对于已经存在于HTML中的DOM节点,可以使用append()方法达到移动的目的

    和append方法很类似的有个方法叫做 after(),其作用是在被选元素后插入指定的内容,仔细看看区别在于:
    • append() 是在被选元素的结束标签前面(即改被选元素的内部)插入指定内容
    • after() 是在被选元素的结束标签后面(即该被选元素的外部)插入指定的内容

    也就是说,append() 实际上是类似于在某个节点中添加其子节点,而after()是某个节点之后添加兄弟节点,也就是说,after()是用于同级节点的,对应的,还有before()方法。

    7、删除DOM

    拿到对应的DOM节点的jQuery对象以后,直接调用 remove() 方法就可以删除了,如果该jQuery对象包含多个DOM节点,还可以实现批量删除。


  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/deng-cc/p/6684044.html
Copyright © 2011-2022 走看看