不是有两个p元素吗,那么$("p").length返回不应该是2吗?怎么是0呢?不是很懂啊

来源:4-4 DOM节点删除之保留数据的删除操作detach()

赞美太阳1123

2018-07-24 10:44

下面是别人家的例子:

length属性的返回值是Number类型,返回该jQuery对象封装的DOM元素的个数。

如果该对象是一个空的jQuery对象,没有封装任何元素,则返回0。

示例&说明

以下面这段HTML代码为例:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

我们编写如下jQuery代码:

var j_li = $("ul li");
document.writeln( j_li.length ); // 3

var j_p = $("p"); // 没有p元素,返回空的jQuery对象
document.writeln( j_p.length ); // 0


写回答 关注

4回答

  • 风起临冬
    2018-08-18 12:56:27

    if那句话意思是,如果p没有长度了,那么函数不进行操作,如果有长度,就临时删除p。防止你重复删除。

  • qq_陈虹林_0
    2018-07-24 17:02:27

    !是非的意思

    这一步是避免重复detach,重复操作下面一步恢复就不行了

  • 赞美太阳1123
    2018-07-24 11:32:44

    <body>

        <p>P元素1,默认给绑定一个点击事件</p>

        <p>P元素2,默认给绑定一个点击事件</p>

        <button id="bt1">点击删除 p 元素</button>

        <button id="bt2">点击移动 p 元素</button>

        <script type="text/javascript">

        $('p').click(function(e) {

            alert(e.target.innerHTML)

        })

        var p;

        $("#bt1").click(function() {

            if (!$("p").length) return; //去重

            //通过detach方法删除元素

            //只是页面不可见,但是这个节点还是保存在内存中

            //数据与事件都不会丢失

            p = $("p").detach()

        });

    那么到底这里面的$("p").length返回几啊~

    atluni... 回复慕粉_蓝

    哦,明白了。谢谢

    2018-09-17 10:10:40

    共 2 条回复 >

  • qq_陈虹林_0
    2018-07-24 11:01:31
     $("p")是指p元素,代码中没有p元素啊,返回肯定是0。


    赞美太阳11...

    额,,我说的是这节课例题的例子里的, $("#bt1").click(function() { if (!$("p").length) return; //去重 //通过detach方法删除元素 //只是页面不可见,但是这个节点还是保存在内存中 //数据与事件都不会丢失 p = $("p").detach() });

    2018-07-24 11:25:45

    共 1 条回复 >

jQuery基础(二)—DOM篇

jQuery第二阶段开启DOM修炼,了解创建、插入、删除与替换

114014 学习 · 590 问题

查看课程

相似问题