zoukankan      html  css  js  c++  java
  • 24-[jQuery]-属性,文档,位置,筛选

    1、jquery的属性操作

    jquery对象有它自己的属性和方法,我们先研究一下jquery的属性操作。
    jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作

    html属性操作:是对html文档中的属性进行读取,设置和移除操作。比如attr()、removeAttr()
    
    DOM属性操作:对DOM元素的属性进行读取,设置和移除操作。比如prop()、removeProp()
    
    类样式操作:是指对DOM属性className进行添加,移除操作。比如addClass()、removeClass()、toggleClass()
    
    值操作:是对DOM属性value进行读取和设置操作。比如html()、text()、val()

      (1)html文档操作,dom元素设置,移除

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery属性操作 attr prop</title>
    </head>
    <body>
        <div id="box">
            <p>路飞学城</p>
        </div>
    
        <button>获取</button>
    
        <ul>
            <li class="luffy1">路飞</li>
            <li class="luffy2">路飞</li>
            <li class="luffy2">路飞</li>
            <li class="luffy3">路飞</li>
        </ul>
    
    </body>
        <script src="jquery-3.2.1.js"></script>
        <script type="text/javascript">
            $(function () {
    
                $('button').click(function () {
    
                    //jquery 属性操作
                    // html 属性操作 attr  ---- 对html 操作
                    //  attr() 有一个参数 表示获取值
                    $('#box p').text($('#box').attr('id'));
    
                     // attr() 如果有两个值 表示设置属性 不能给类添加 多个属性
                    $('#box').attr('class','foo');
                    //设置多个值 使用对象存储 , 如果设置多个类名 不能使用 attr
                    $('#box').attr({'class':'foo2',name:'alice'});  // class 覆盖
    
                    // $('#box').removeAttr('name');  // 删除一个属性
    
                    $('#box').removeAttr('name class'); // 删除多个
    
    
                    //Dom属性操作  prop ----对dom操作
                    console.log($('li'));
                    // 获取第一个元素得class值
                    console.log($('li').prop('class'));
    
                    //设置值
                    // $('li').first().prop('name','app');
                    $('li').first().prop({'name':'app','name2':'app2'});
                    console.log($('li').first());
    
                    //删除dom对象得name属性
                    $('li').first().removeProp('name');
    
                    console.log($('li').first());
    
                    // console.log($('li').first().prop('name'));
                    //
                    // console.log($('li').prop('name'));
    
                });
    
            })
    
        </script>
    </html>

      (2)操作 class 值,操作值html,text,val

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery属性操作class和值操作</title>
        <style type="text/css">
            span.active{
                font-size: 30px;
            }
    
        </style>
    </head>
    <body>
        <div id="box">
            <p>路飞学城</p>
        </div>
    
        <button>获取</button>
    
        <ul>
            <li class="luffy1">路飞</li>
            <li class="luffy2">路飞</li>
            <li class="luffy2">路飞</li>
            <li class="luffy3">路飞</li>
        </ul>
    
        <span class="span1">
            路飞吧!
        </span>
    
        <div id="box2">
            我是哈哈
            <p>我是一个段落</p>
            <a href="">百度一下</a>
            <input type="text" value="我们" name="">
            <button id="btn">get</button>
        </div>
    
    </body>
        <script src="jquery-3.2.1.js"></script>
        <script type="text/javascript">
            $(function () {
    
                $('button').click(function () {
    
                    // 3.addClass removeClass()  添加类和删除类
                    $('span').addClass('span2 span3');
    
                    $('span').removeClass('span2');
    
                    var isBig = true;
                    $('span').click(function () {
                        if(isBig){
                             $(this).addClass('active');
                             isBig = false;
                        }else{
                            $(this).removeClass('active');
                            isBig = true;
                        }
                    });
    
                    //4.值属性得操作 text() html() val()
                    //获取文本
                    console.log($('#box2').text());  // 所有得文本都拿到了
                    //获取所有 html
                    console.log($('#box2').html());
    
                    // 设置值 用得比较频繁
                    // $('#box2').text('嘿嘿');
                    // $('#box2').text('<a>luffy city</a>');
                    // $('#box2').html('<a href="#">luffy city</a>');
    
    
                    //val()
                    console.log($('input').val());  //获取值
                    $('input').val('你是个大头鬼');  //设置值
    
                    $('#btn').click(function () {
                        var val = $('input').val();
                        $('#box2').text(val);
    
                    });
    
                    //监听input 有变化时  表单控件使用得一个方法
                    $('input').change(function () {
                        console.log($(this).val());
                    })
    
    
                });
    
            })
    
        </script>
    </html>

     

    2、操作input中的value值

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>操作表单input中得value值</title>
    </head>
    <body>
        <form action="">
            <input type="radio" name="sex" value="112" /><input type="radio" name="sex" value="11" checked="" /><input type="radio" name="sex" value="113" />gay
    
            <input type="checkbox" value="a" checked=""/>吃饭
            <input type="checkbox" value="b" checked=""/>睡觉
            <input type="checkbox" value="c" checked=""/>打豆豆
    
            <select name="timespan" id="timespan" class="Wdate" >
                <option value="1">8:00-8:30</option>
                <option value="2">8:30-9:00</option>
                <option value="3" selected>9:00-9:30</option>
            </select>
            <input type="text" name="" id="" value="111" />
        </form>
    </body>
        <script src="jquery-3.2.1.js"></script>
        <script type="text/javascript">
            $(function () {
                console.log($(':radio'));
                console.log($(':checkbox'));
    
                /*
                input
                *  :button
                *  :submit
                *  :file
                *  :text
                *  :disabled
                *
                * */
    
                //1.获取单选框中 value 值
                console.log($('input[type=radio]:checked').val());
    
                //2.获取复选框 value 值  仅仅获取 第一个值
                console.log($('input[type=checkbox]:checked').val());
    
                //3.下拉列表 被选中得值
                console.log($('#timespan option:selected').val());
    
                //4.设置单选得值
                $('input[type=radio]').val(['113']); // 里面 得是 数组
    
                //5.设置复选值
                $('input[type=checkbox]').val(['b','c']); // 里面 得是 数组
    
                //6.设置下拉列表 这里必须要用 select
                // $('#timespan').val(['2']);
                $('select').val(['2']);  // 后面会覆盖前面得
                // $('select').val(['2','1']);  // 后面会覆盖前面得
    
                //文本框
                console.log($('input[type=text]').val());
                $('input[type=text]').val(33);
    
            })
    
        </script>
    </html>

     

    3、jQuery的文档操作

       (1)插入操作

        一、父元素.append(子元素) 追加某元素 父元素中添加新的元素

    var oli = document.createElement('li');
    oli.innerHTML = '哈哈哈'
    //jquery中的dom操作
    //1.append(content)追加  往父元素中添加新的元素
    //content:string | element | jquery元素
    $('ul').append('<li>1233</li>')
    $('ul').append(oli)
    //如果直接的内容是当前页面中的某些元素,那么这些元素将从原位置上消失。简言之,就是一个移动操作
    $('ul').append($('#app'))

        二、子元素.appendTo(父元素) 追加到某元素 子元素添加到父元素

    $('<li>天王盖地虎</li>').appendTo($('ul')).addClass('hu')

        三、prepend() 前置添加, 添加到父元素的第一个位置

    $('ul').prepend('<li>我是第一个</li>')

        四、prependTo 后置添加,第一个元素添加到父元素中

     $('<a href="#">路飞学诚</a>').prependTo('ul')

        

      五、父.after(子) 在匹配的元素之后插入内容 与 子.insertAfter(父)

    $('ul').after('<h4>我是一个h3标题</h4>')
    $('<h5>我是一个h2标题</h5>').insertAfter('ul')

      

      六、父.before(子) 在匹配的元素之前插入内容 与 子.insertBefor(父)

    $('ul').before('<h3>我是一个h3标题</h3>')
    $('<h2>我是一个h2标题</h2>').insertBefore('ul')

      (2)复制操作

      clone() 克隆匹配的DOM元素并且选中这些克隆的副本

    $('button').click(function() {
    
      // 1.clone():克隆匹配的DOM元素并且选中这些克隆的副本。
     // 2.clone(true):元素以及其所有的事件处理并且选中这些克隆的副本(简言之,副本具有与真身一样的事件处理能力)
      $(this).clone(true).insertAfter(this);
    })
    

      

      (3)替换操作

      一、replaceWith():将所有匹配的元素替换成指定的HTML或DOM元素。

    //将所有的h5标题替换为a标签
    $('h5').replaceWith('<a href="#">hello world</a>')
    //将所有h5标题标签替换成id为app的dom元素
    $('h5').replaceWith($('#app'));

      二、replaceAll():用匹配的元素替换掉所有 selector匹配到的元素

    $('<br/><hr/><button>按钮</button>').replaceAll('h4')

      (4)删除操作

    一、remove() 删除节点后,事件也会删除(简言之,删除了整个标签)

    $('ul').remove();

    二、detach() 删除节点后,事件会保留

     var $btn = $('button').detach()
     //此时按钮能追加到ul中
     $('ul').append($btn)

    三、empty(): 清空元素中的所有后代节点

    //清空掉ul中的子元素,保留ul
    $('ul').empty()
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery文档操作</title>
    </head>
    <body>
        <span>haha</span>
        <ul>
        </ul>
        <button id="btn">按钮</button>
    </body>
        <script src="jquery-3.2.1.js"></script>
        <script type="text/javascript">
            $(function () {
    
                var oLi = document.createElement('li');
                oLi.innerHTML = '路飞';
    
                //追加元素
                $('ul').append('<li><a href="#">luffy</a></li>');
                $('ul').append(oLi);
    
                //如果直接的内容是当前页面中的某些元素,那么这些元素将从原位置上消失。简言之,就是一个移动操作
                $('ul').append($('span'));
    
                //apendTo()
                $('<a href="#">luffy 2</a>').appendTo($('ul'));
    
                //prepend()  插入到被选中元素得第一个位置
                $('ul').prepend('<li>我是第一个元素</li>');
    
                $('<li>我是第0个元素</li>').prependTo($('ul'));
    
                //after before
                $('ul').before('<h2>我是一个二级标题</h2>');
    
                //insertBefore
                $('<h1>我是一级标题</h1>').insertBefore($('ul'));
    
                $('ul').after('<h3>我是一个三级标题</h3>');
    
                // insertAfter
                $('<h4>我是一个四级标题</h4>').insertAfter($('ul'));
    
    
                //复制操作
                $('button').click(function () {
    
                    // 1.clone():克隆匹配的DOM元素并且选中这些克隆的副本。
                    // 2.clone(true):元素以及其所有的事件处理并且选中这些克隆的副本(简言之,副本具有与真身一样的事件处理能力)
                    // true 完全克隆  默认是false
                    $(this).clone(true).insertAfter($(this));
    
                });
    
                //替换
                $('h3').replaceWith('<button>替换得按钮</button>');
    
                // $('<a href="#">替换得超联系</a>').replaceAll('button');
    
                //删除
                // empty()  只清空了被选得内容
                // $('ul').empty();
    
                //remove() 被选元素 也被删除了   事件就没了
                $('ul').remove();
                var a = $('button').remove();
                console.log(a[0],a[1]);
                $('ul').append(a[1]);
    
                //detach() 被选元素 也被删除了 移除匹配得节点元素 删除节点后 事件会保留
                // $('ul').detach();
                // var a = $('button').detach();
                // console.log(a[0],a[1]);
                // $('ul').append(a[1]);
    
            })
    
        </script>
    </html>

    4、jquery位置属性

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery位置属性</title>
        <style type="text/css">
            *{padding: 0;margin: 0;}
            #box{position: relative;width: 200px;height: 200px;border: 1px solid red;padding: 10px 5px;}
            p{position: absolute;left:30px;top: 30px}
        </style>
    </head>
    <body style="height: 2000px;  2000px;">
        <div id="box">
    
            <p>我是一个段落标签</p>
    
        </div>
    
        <button id="btn">动画吧</button>
    
        <div style=" 200px;height: 200px;margin:  100px auto;border: 1px solid deepskyblue;"></div>
    
    </body>
        <script src="jquery-3.2.1.js"></script>
        <script type="text/javascript">
            $(function () {
    
                //1.获取匹配元素得相对父元素得偏移  position
                console.log($('p').position().left);  // 30
                console.log($('p').position().top);   //30
    
                var offsetTop = $('p').position().top+50+'px';
    
                $('#btn').click(function () {
                    $('p').animate({top:offsetTop},1000)
                });
    
                //2.获取匹配元素 相对滚动条卷起得位置信息  scrollTop scrollLeft
    
                console.log($(document).scrollTop());
                console.log($(document).scrollLeft());
    
                //监听文档滚动
                $(document).scroll(function () {
                    // console.log($(document).scrollTop());
                    // console.log($(document).scrollLeft());
                });
    
                //offset 获取匹配元素在当前位置 相对偏移 相对于浏览器
                console.log($('#box').offset());
                console.log($('p').offset().top); // 31
                console.log($('p').offset().left);  //31
                console.log($('#btn').offset().top);
                console.log($('#btn').offset().left);
    
                //获取元素得宽高
                console.log(''+$('#box').width()); //200
                console.log(''+$('#box').height()); //200
    
                // 设置宽高
                $('#box').width(400);
                $('#box').height(400);
    
                //innerWidth outerWidth
                //innerWidth = width + 2*padding 不包括边框  获取匹配元素得内部宽度
                console.log($('#box').innerWidth()); //410
    
                //outerWidth = width + 2*padding + 2*border 获取匹配元素得外部宽度
                console.log($('#box').outerWidth()); //412
    
            })
    
        </script>
    </html>

     5、jquery常用筛选方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery常用筛选方法</title>
        <style type="text/css">
            li.active{background-color: gray;}
        </style>
    </head>
    <body>
        <ul>
            <li class="danger">1</li>
            <li><a href="">22</a></li>
            <li class="danger">3</li>
            <li>4</li>
            <a href="#" id="anchor">百度</a>
            <a href="#">百度1</a>
    
        </ul>
    </body>
        <script type="text/javascript" src="jquery-3.2.1.js"></script>
        <script type="text/javascript">
            $(function () {
    
                console.log($('li'));
    
                // jquery 得遍历
                $('ul').children().each(function (index,ele) {
                    // console.log(index,ele);
                    var isDanger = $(this).hasClass('danger');
    
                    if(isDanger){
                        $(this).css('color','red');
                    }else{
                        $(this).css('font-size','28px')
                    }
                });
    
                console.log($('ul').children());
                console.log($('li'));
    
                console.log($('ul').children('.danger'));
    
                console.log($('li').parent());
                console.log($('a').parent());
    
                console.log($('li').last().prev());
                console.log($('li').last().prevAll());
    
                //siblings  后面加选择器
                console.log($('li').siblings('li'));
                console.log($('#anchor').siblings('li'));
                console.log($('#anchor').siblings('a')); // 同胞兄弟
                
                $('li').hover(function () {
                    $(this).addClass('active').siblings('li').removeClass('active');
                })
    
            })
        </script>
    </html>

     

  • 相关阅读:
    6-5 函数
    6-2 触发器
    4、MongoDB学习之备份还原
    3、MongoDB学习之固定集合
    2、MongoDB学习之索引的管理
    1、MongoDB学习之基本操作
    JS-01
    | 和 ||,& 和 && 的区别
    正则
    设计测试用例的经验总结
  • 原文地址:https://www.cnblogs.com/venicid/p/9132364.html
Copyright © 2011-2022 走看看