jQuery--DOM操作(一)

作者: 我可能是个假开发 | 来源:发表于2018-01-19 09:56 被阅读101次

jQuery--DOM操作(一)

通过jQuery的选择器可以方便的获取页面上的元素,通过选择器获取到的,不管是多个元素、零个元素还是一个元素,都会被封装到类数组的jQuery对象中,也称为jQuery对象集合或jQuery元素集合等。

jQuery对象集合.jpg

一、创建HTML

1.DOM对象和jQuery对象
区别:
• 检测DOM Object:

if ( obj.nodeType )

• 检测jQuery Object:

if ( obj.jquery )

• 转换:

var jqueryObj = $(domObj);
var domObj = jqueryObj.get([index]);

代码示例:

<head>
    <meta charset="UTF-8">
    <title>DOM Object vs jQuery Object</title>
</head>

<body>
    <div id="div">div</div>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script>
    $(function() {
        var DOMObject = document.getElementById('div');
        var jQueryObject = $('#div');
        
        console.log(DOMObject);
        console.log(jQueryObject);

        //console.log('DOMObject.nodeType: %s', DOMObject.nodeType);
        //console.log('DOMObject.jquery: %s', DOMObject.jquery);

       // console.log('jQueryObject.nodeType: %s', jQueryObject.nodeType);
       // console.log('jQueryObject.jquery: %s', jQueryObject.jquery);

       // console.log('jQueryObject.get(0): %o', jQueryObject.get(0));
       // console.log('$(DOMObject): %o', $(DOMObject));

       // console.log('jQueryObject.get(0).nodeType: %s', jQueryObject.get(0).nodeType);
        //console.log('$(DOMObject).jquery: %s', $(DOMObject).jquery);
    });
    </script>
</body>
DOM对象和jQuery对象.jpg

2.创建元素

 $('<div>Hello</div>');

设置属性:

<head>
    <meta charset="UTF-8">
    <title>create HTML</title>
</head>

<body>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script>
    $(function() {
        var div = $('<div>Hello</div>'); //此时div为jQuery对象

        console.log(div);

        console.log($('div')); //在没有放到页面上之前,通过选择器是选择不到的

        div.appendTo('body'); //放到页面上  appendTo() 追加

        console.log($('div')); //此时可以选择出来

        //追加属性
        var link = $('<a>', {
            text: '百度',
            href: 'https://www.baidu.com',
            target: '_blank',
            title: '去往百度首页'
        });

        link.appendTo('body');

        var link2 = $('<a>百度</a>').attr({
            href: 'https://www.baidu.com',
            target: '_blank',
            title: '去往百度首页'
        });

        link2.appendTo('body');
    });
    </script>
</body>

3.检查和提取元素

检查和提取元素.jpg

(1)检查元素:

①检查元素数量

$('xxx').length

(2)提取元素

①[index] 返回DOM元素
②get([index]) 返回DOM元素或元素集合
③eq(index) 返回jQuery对象
④first()
⑤last()
⑥toArray()

<body>
<ul>
    <li>item-1</li>
    <li>item-2</li>
    <li>item-3</li>
    <li>item-4</li>
    <li>item-5</li>
    <li id="item6">item-6</li>
    <li>item-7</li>
    <li>item-8</li>
    <li>item-9</li>
</ul>

<script src="../../../vendor/jquery-1.12.4.js"></script>
<script>
    $(function () {
        var elements = $('li');
        console.log(elements.length);//9  检查元素数量

        
        var elements2 = $('div');
        //console.log(elements2[0].style.color = 'blue');  // error
        //console.log(elements2.eq(0).addClass('blue'));  // no error
        //console.log(elements2.addClass('blue'));  // no error


        console.log(elements[0]);
        console.log(elements[1]);
        console.log(elements.get()); //获取所有 (数组)
        console.log(elements.get(0));
        console.log(elements.get(1));
        console.log(elements.get(-1));//<li>item-9</li> 从最后往前计算 -1为第一个元素,以此类推。
        console.log(elements[-1]);
        console.log(elements.get(100)); //undefined
        console.log(elements[100]);//undefined

        console.log(elements.eq(0));//eq方法,性能比筛选器高
        console.log($('li').eq(0)); //eq筛选器
        console.log($('li:eq(0)'));

        console.log(elements.eq(0));
        console.log(elements.first()); //不需要参数 性能比筛选器高

        console.log(elements.eq(-1));
        console.log(elements.last());

        console.log(elements.toArray());
        console.log(elements.get());

        console.log(elements.index($('#item6'))); 

    });
</script>

二、通过关系查找jQuery对象

<body>

<div id="box">
    <div>
        <div>
            <p id="info">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic, rem?</p>
        </div>
    </div>
</div>

<script src="../../../vendor/jquery-1.12.4.js"></script>
<script>
    $(function () {

        var count1 = $('#info').parents().length;
        var count2 = $('#info').parents('div').length;

        console.log(count1);
        console.log(count2);

        var count3 = $('#box > *').length;
        var count4 = $('#box').children().length;

        console.log(count3);
        console.log(count4);

        var count5 = $('#info').children().length;
        var count6 = $('#info').contents().length;

        console.log(count5);
        console.log(count6);

    });
</script>

通过关系查找jQuery对象的方法:
• children([selector]):直接子元素
• contents():直接子元素
• find(selector):包含子元素和孙子元素
• parent([selector]):返回直接父元素
• parents([selector]):返回所有父元素
• parentsUntil([selector]):获取到具体层级的父元素(不包含最后一个)
• closest(selector):从元素本身开始,逐级向上进行元素的匹配,并返回最先匹配的元素。会首先检查当前元素是否匹配,如果匹配则返回元素本身,不匹配时向上逐级寻找,都没找到则返回一个空的jQuery对象。
• next([selector]):获取当前元素之后紧邻的同辈元素
• nextAll([selector]):当前元素之后的所有同辈元素
• nextUntil([selector]):查找当前元素之后的所有同辈元素,直到遇到匹配的元素为止。
• prev([selector]):往前查找同辈元素。
• prevAll([selector])
• prevUntil([selector])
• siblings([selector]):取得元素的所有同辈元素的元素集合,即把该元素的兄弟姐妹全部取出来。

<div id="box1">
    <div id="box2">
        <div id="box3">
            <p id="info">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic, rem?</p>
            <ul>
                <li class="item1">item1</li>
                <li class="item2">item2</li>
                <li class="item3">item3</li>
                <li class="item4">item4</li>
                <li class="item5">item5</li>
                <li class="item6">item6</li>
                <li class="item7">item7</li>
                <li class="item8">item8</li>
                <li class="item9">item9</li>
            </ul>
        </div>
    </div>
</div>

<script src="../../../vendor/jquery-1.12.4.js"></script>
<script>
    $(function () {

        console.log($('#box3').children());
        console.log($('#box3').children('p'));

        console.log($('#box3').contents());

        console.log($('#box3').find('.item1'));

        console.log($('ul, #box3').parent());
        console.log($('ul, #box3').parent('#box2'));

        console.log($('ul, #box3').parents());
        console.log($('ul, #box3').parents('#box2'));

        console.log($('.item1').parentsUntil('#box1'));

        console.log($('.item1').closest('div'));

        console.log($('.item1').closest('#box1'));
        console.log($('.item1').parents('#box1'));


        console.log($('.item4').next('li')); //item5
        console.log($('.item4').nextAll('li'));
        console.log($('.item4').nextUntil('.item7'));//item5 item6 

        console.log($('.item4').prev('li'));
        console.log($('.item4').prevAll('li'));
        console.log($('.item4').prevUntil('.item1'));

        console.log($('.item4').nextUntil('.item1'));
        console.log($('.item4').prevUntil('.item7'));


        console.log($('.item4').siblings());//不包含本身
        console.log($('.item4').siblings('.item2'));

    });
</script>

三、筛选和遍历jQuery对象

(1)添加元素
• add(selector)

(2)过滤元素
• not(selector):删除掉该元素。
• filter(selector):筛选出和指定表达式匹配的元素集合,把选择器匹配到的返回。
• has(selector):保留包含特定后代的元素

(3)获取子集
• slice(start[, end])

(4)转换元素
• map(callback):将一个jQuery对象转换成另一个jQuery对象

(5)遍历元素
• each(iterator)

<body>

<div id="box1">
    <div id="box2">
        <div id="box3">
            <p id="info">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic, rem?</p>
            <ul>
                <li class="item1">item1</li>
                <li class="item2">item2</li>
                <li class="item3">item3</li>
                <li class="item4">item4</li>
                <li class="item5">item5</li>
                <li class="item6">item6</li>
                <li class="item7">item7</li>
                <li class="item8">item8
                    <ul></ul>
                </li>
                <li class="item9">item9</li>
            </ul>
        </div>
    </div>
</div>

<script src="../../../vendor/jquery-1.12.4.js"></script>
<script>
    $(function () {

        console.log($('.item1, .item2'));
        console.log($('.item1').add('.item2'));

        console.log($('li').not('.item2, .item3'));
        console.log($('li').filter('.item2, .item3'));

        console.log($('li').not(function (index) {
            return $(this).hasClass('item1');
        }));
        console.log($('li').filter(function (index) {
            return $(this).hasClass('item1');
        }));

        console.log($('li').has('ul'));

        console.log($('li').slice(0));//所有元素
        console.log($('li').slice(3));
        console.log($('li').slice(3, 5));
        console.log($('li').slice(-2));//从集合尾部开始 8、9

        console.log($('div').map(function (index, domElement) { 
            return this.id;
        }));

        console.log($('li').each(function (index, domElement) {
            this.title = this.innerText;
        }));

        console.log($('div').each(function (index, domElement) {
        if(this.id === 'box2'){
            return false //return true:相当于continue  false:相当于break
        }
        this.title = this.id
    }));
    });
</script>

四、jQuery对象的其他操作

• is(selector)
• end():回到最近的一个破坏性操作之前,将匹配的元素集合变为前一次状态
• addBack([selector]):

破坏性操作.png

注意:如果不是破坏性操作,调用end会返回空

<body>
    <div id="box1">
        <div id="box2">
            <div id="box3">
                <p id="info">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic, rem?</p>
                <ul>
                    <li class="item1">item1</li>
                    <li class="item2">item2</li>
                    <li class="item3">item3</li>
                    <li class="item4">item4</li>
                    <li class="item5">item5</li>
                    <li class="item6">item6</li>
                    <li class="item7">item7</li>
                    <li class="item8">item8
                        <ul></ul>
                    </li>
                    <li class="item9">item9</li>
                </ul>
            </div>
        </div>
    </div>
    <script src="../../../vendor/jquery-1.12.4.js"></script>
    <script>
    $(function() {

        console.log($('#box3').children().is('p')); //true
        console.log($('#box3').children().is('img'));//false

        console.log($('#box3').children().end());//
        console.log($('#box3').end());

        //        console.log(
        //            $('#box3').find('.item3').css('color', 'red') //破坏性操作 find之后返回的是item3
        //                .end().find('.item5').css('color', 'blue') //返回上一次状态
        //                .end().find('.item7').css('color', 'green')
        //                .end().find('.item9').css('color', 'orange')
        //        );

        //        console.log(
        //            $('.item3').nextUntil('.item6').css('color', 'red')
        //        );

        console.log(
            $('.item3').nextUntil('.item6').addBack().css('color', 'red')
        );
    });
    </script>
</body>

相关文章

  • jQuery--DOM操作(二)

    jQuery--DOM操作(二) 一、元素的特性、属性 特性 attributes vs 属性 propertie...

  • jQuery--DOM操作(一)

    通过jQuery的选择器可以方便的获取页面上的元素,通过选择器获取到的,不管是多个元素、零个元素还是一个元素,都会...

  • jQuery--DOM操作(一)

    jQuery--DOM操作(一) 通过jQuery的选择器可以方便的获取页面上的元素,通过选择器获取到的,不管是多...

  • Jquery--dom操作api

    .append() 可以一次添加多个内容,内容可以是DOM对象、HTML string、 jQuery对象 .pr...

  • jQuery--DOM操作(二)

    一、元素的特性、属性 特性 attributes vs 属性 properties attributes:值为 s...

  • linux操作之vi操作(一)

    引言 大学课程内也开过linux,自己也使用过,不过阿里二面的时候问道了一个很简单的grep命令,却没有回答上来,...

  • 文件操作(一)

    0. 文件 概念:数据存放的 容器 作用:持久性 地存储数据 组成1. 文件名 注意:如果是同级目录下,不允许...

  • DOM操作(一)

    DOM是JavaScript操作网页的接口,全称为”文档对象模型“(Document Object Model)。...

  • 短线操作一

    沪电股份前面以连续四个涨停起涨一直走到现在。 昨天跳空开盘,有突破小箱体的趋势,开盘以后,先下挫,然后买了,最后涨...

  • 窗口操作一

网友评论

    本文标题:jQuery--DOM操作(一)

    本文链接:https://www.haomeiwen.com/subject/qhtqoxtx.html