jQuery和原生js获取DOM节点

jQuery地址

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

一、获取节点

1. js获取节点

  • document.querySeletor(); 获取一个
  • document.querySeletorAll(); 获取多个
  • document.getElementById();
  • document.getElementsByClassName();
<body>
    <div id="app">appppppppppppp</div> 
    <div class="box">appppppppppppp</div> 
    <script>
       var _app = document.getElementById('app');
       var _app = document.getElementsByClassName('box');
       var _app = document.querySelector('.box');
       var _app = document.querySelector('#app');
    </script>
</body>

2.jQ获取节点

<body>
    <div id="aa">appppppppppppp</div> 
    <div class="bb">boxxxxxxxxx</div>
 
    <ul class="list">
        <li class="item">1xxxx</li>
        <li class="item">2xxxx</li>
        <li class="item">3xxxx</li>
    </ul>

     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
     <script>
        // 获取第一个div对象
        var $aa = $('#aa');
        // 获取第二个div对象
        var $bb = $('.bb');

      // 获取所有li节点
        var $list = $('.list .item');

    </script>
</body>

二、原生js dom节点对象和jquery节点对象互转

  • 只有jquery对象才可以使用jquery提供的方法, 所以有些时候需要将原生js dom对象转成jquery dom对象
  • 原生转jq: $(原生dom节点对象);
  • jq转原生 jq对象[0];
<body>
    <div id="aa">appppppppppppp</div> 
    <div class="bb">boxxxxxxxxx</div>

     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
     <script>
        //js转jQ
        var $aa = $('#aa');
        var _aa = $aa[0];
        //jQ转js
        var _bb = document.querySelector('.bb');
        var $bb = $(_bb);
    </script>
</body>

三、 jquery对象获取元素节点

  • $('ul li:first-child')获取第一个li元素节点
  • siblings()获取元素的所有兄弟节点
  • parent()获取元素的父节点
  • parents()获取元素的所有长辈节点
  • closest('xx')获取元素最近的某个长辈节点
  • index() 获取元素的下标
  • find('xx')查找元素的某个后代节点
 <body>
  <ul>
    <li>1.xxx</li>
    <li>2.xxx</li>
    <li class="item">3.xxx</li>
    <li>4.xxx</li>
    <li>5.xxx</li>
  </ul>

  <div class="cc xx">
    <div class="aa">
      <div class="bb">
        <div class="cc yy">
          <div class="dd">dd</div>
        </div>
      </div>
    </div>
  </div>

  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script>
    // 获取第一个li的jq对象, 命名为$first
    var $first = $('ul li:first-child');
    console.log('$first', $first);

    // 获取$first的所有兄弟节点
    var $siblings = $first.siblings();
    console.log('$siblings', $siblings);

    // 获取$first的某个兄弟节点
    var $siblings = $first.siblings('.item');
    console.log('$siblings', $siblings);

    // 获取$first的父节点
    var $parent = $first.parent();
    console.log('$parent', $parent);

    // dd元素
    var $dd = $('.dd');
    var $parents = $dd.parents(); // 所有长辈
    var $parents = $dd.parents('div'); // 所有div长辈
    console.log('$parents', $parents);

    var $aaa = $dd.closest('.cc'); // 离$dd最近的.cc长辈
    console.log('$aaa', $aaa);


    // 获取$first的下标
    var index = $first.index();
    console.log('index', index); 

    // 获取第三个li元素的下标
    var $second = $('ul li:nth-child(3)');
    console.log($second.index());
  </script>
</body> 

四、获取和修改dom节点的内容

1.原生js获取和修改内容

  • innerText 获取文本内容
  • innerHtml 获取全部内容(包括文本和标签)
  • value 获取输入框内容
  • document.querySelector('input').value = '11' 修改内容
<body>
    <div class="box">
        <button>aaa</button>
    </div> 
    <div class="box2">
        qqqqqq
    </div>
    <input type="text" value="1380000000000">

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        //获取box标签
        var _box = document.querySelector('.box');
        console.log(_box);

        //获取box里面的文本
        var _boxText = _box.innerText;
        console.log(_boxText);

        //修改box2内容
        document.querySelector('.box2').innerText = 'aaaaa';

        //获取box里面的元素(包含标签和文本)
        var _boxHtml= _box.innerHTML;
        console.log(_boxHtml);

        //获取输入框的内容
        var a = document.querySelector('input').value;
        console.log(a);

        //修改输入框的内容
        document.querySelector('input').value = '11111111111111';
    </script>
</body> 

2.jQuery获取和修改内容

  • text() 获取文本内容
  • html() 获取所有内容(包含文本和标签)
  • val() 获取输入框的值
<body>
    <div class="box">
        <button>aaa</button>
    </div> 
    <input type="text" value="1380000000000">

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        // 获取.box的jq对象, 命名为$box
        var $box = $('.box');
      
        // 获取$box的文本  
        var text = $box.text();
        console.log('text',text);
      
        // 获取$box的内容(包含文本和标签)  
        var htmlText = $box.html();
        console.log('htmlText',htmlText);
       
        // 获取输入框的jq对象
        var $input = $('input');
      
        // 获取输入框的值
        var value = $input.val();
        console.log('输入框的值',value);
      
        // 修改输入框的值为'我爱codeing'
        $input.val('我爱codeing');

        // 修改内容: 找到并修改button的内容为'立即登录'
        $box.find('button').text('立即登录');

        // 把$box的内容变成一个列表(多个li)
        $box.html(`
          <li>xxxxxx</li>
          <li>xxxxxx</li>
          <li>xxxxxx</li>
          <li>xxxxxx</li>
          <li>xxxxxx</li>
        `); 
    </script>
</body> 

五、获取和修改dom节点的属性

1.原生js获取和修改节点属性

<body>
    <a href="http://baidu.com">百度</a>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        // 获取a标签节点对象
        var _a = document.querySelector('a');
        // 获取a标签的属性href方法1
        var href1 = _a.href;
        // 获取a标签的属性href方法2
        var href2 = _a.getAttribute('href');
        console.log('href2', href2);
        // 修改a标签的href属性为'http://sina.com' (两种方法)
        _a.href = 'https://www.jianshu.com/'; // 方法1
        _a.setAttribute('href','https://www.jianshu.com/');
    </script>
</body>

2.jQuery获取和修改节点属性

<body> 
    <a href="http://baidu.com">百度</a>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        // 获取a标签的jq对象
        var $a = $('a');
        // 获取a标签的属性href
         var href = $a.attr('href');
         console.log('href', href);
        // 修改a标签的属性href和文本
        $a.attr('href','https://www.jianshu.com/');
        $a.text('简书');
    </script>
</body>

六、获取和修改dom节点样式

1.原生js获取和修改节点样式

  • _box.style.color 获取样式的颜色(行内样式)
  • window.getComputedStyle 获取样式的颜色(非行内样式)
<!DOCTYPE html>
<html lang="en"> 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            color: red;
            font-size: 20px;
        }
    </style>
</head> 
<body>
    <div class="box">
        boxxxxxxxxxxxxxxxxxxx
    </div>
    <script>
         var _box = document.querySelector(".box");
         // 只能获取内联样式
         var fontSize = _box.style.fontSize; // 获取不到
         console.log('fontSize1',fontSize);
         //元素.style.样式名称操作行内样式,非行内样式需要使用window.getComputedStyle来操作
         var _boxStyle = window.getComputedStyle(_box); 
         var fontSize2 = _boxStyle.fontSize;
         console.log('fontSize2',fontSize2);
    </script>
</body> 
</html>

2. jQuery获取和修改节点样式

  • css('fontSize') 获取节点样式
  • css('fontSize','25px') 修改节点样式
  • show() 显示
  • hide() 隐藏
  • addClass()增加类
  • removeClass()去除类
  • toggleClass()没有添加类的元素添加类
<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .box {
            color: red;
            font-size: 20px;
        }
        .red {
            color: red;
        }
        .bred {
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div class="box">
        boxxxxxxxxxxxxxxxxxxx
    </div>
    <hr>
    <h3 class="box2">隐藏</h3>
    <hr>
    <div class="text-box">
        <p>我爱codeing</p>
        <p>我爱codeing</p>
        <p>我爱codeing</p>
        <p>我爱codeing</p>
    </div>
    
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        // 获取.box的jq对象
        var $box = $('.box');
        // 获取颜色和字体
        var color = $box.css('color');
        var fontSize = $box.css('font-size');
        console.log('color', color);
        console.log('fontSize', fontSize);
        // 修改背景样式
        $box.css('background-color', 'gray');
        // 链式调用
        $box.css('border', '1px solid red').css('font-size', '30px').css('color', '#fff');

        // 添加事件, 实现text-box的显示和隐藏
        // 显示时, 给.box标签添加类red, 隐藏时移除类red
        // 显示时, 给hr标签添加类bred, 隐藏时移除类bred
        $('.box2').on('click', function () {
            // .box使用toggleClass
            $('.box2').toggleClass('red');
            var display = $('.text-box').css('display');
            if (display === 'block') {
                //隐藏状态
                $('.text-box').hide();
                $('.box2').text('显示');
                //不使用toggleClass,使用这个也可以
                // $('.box').removeClass('red');
            } else {
                // 显示的状态
                $('.text-box').show();
                $('.box2').text('隐藏');
                //不使用toggleClass,使用这个也可以
                // $('.box').addClass('red');
            }
        })
    </script>
</body>
</html>

七、增加和删除节点

1. 原生js添加和删除节点

<body>
  <ul>
    <li>1.xxx</li>
    <li>2.xxx</li>
    <li>3.xxx</li>
  </ul>
  <script>
    //获取li节点
    var li = document.createElement('li');
    //给li节点添加内容和样式
    li.innerText = '4.xxxx';
    //获取ul节点
    var _ul = document.querySelector('ul');
    //创建li节点//把li节点插入到ul里
    _ul.appendChild(li);

    // 获取第2个li节点
    var _second = document.querySelector('ul li:nth-child(2)');
    // 删除
    _second.remove();
  </script>
</body>

给没有jQuery的网站添加jQuery.js

var script = document.createElement('script'); 
script.src = 'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js';
'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js'
document.body.appendChild(script);

2. jq添加,删除,移动,克隆节点

  • append()
    • 内部最后添加一个元素 (作为子代元素添加)
    • 移动元素
  • prepend() 内部前面添加一个元素 (作为子代元素添加)
  • before() 外部前面添加一个元素 (作为兄弟元素添加)
  • after() 外部后面添加一个元素 (作为兄弟元素添加)
  • clone() 克隆一个元素

添加 删除

<body>
    <ul>
        <li>1.xxx</li>
        <li>2.xxx</li>
        <li>3.xxx</li>
    </ul>

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        var $ul = $('ul');

        // 在ul的底部添加一个li节点
        $ul.append('<li>4.xxx</li>');

        // 在ul的顶部添加一个li节点
        $ul.prepend('<li>0.xxx</li>');

        // 在ul后面添加兄弟节点div.box
        $ul.after('<div>box</div>');

        // 在ul后前面添加兄弟节点p.box 
        $ul.before('<p>p.box</p>');

        // 删除第二个li元素
        $ul.find('li:nth-child(2)').remove();
    </script>
</body>
</html>

移动 克隆

<!DOCTYPE html>
<html lang="en"> 
<head>
    <style>
        .box{
            border: 1px solid;
        }
    </style>
</head> 
<body> 
     <ul>
         <li>1.xxx</li>
         <li>2.xxx</li>
         <li>3.xxx</li>
         <li>4.xxx</li>
     </ul>

     <div class="box"></div>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        // 获取第一个li节点
        var $li1 = $('li:first-child');
      
        // 把第一个li节点移动到.box内
        $('.box').append($li1);

        // 克隆最倒数第二个li节点
        var $li2 = $('ul li').eq('-2').clone();
        $('ul').append($li2);

        // 把节点插入到.box内
        $('.box').append($li2);
    </script>
</body> 
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容