为了账号安全,请及时绑定邮箱和手机立即绑定

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

下面是别人家的例子:

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 回答

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

0 回复 有任何疑惑可以回复我~

!是非的意思

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

0 回复 有任何疑惑可以回复我~

<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返回几啊~

0 回复 有任何疑惑可以回复我~
#1

慕粉_蓝

$("#bt1").click(function() { if (!$("p").length) return; //如果元素为空,结束,不做操作 p = $("p").detach()//不为空,进行detach()操作,并将其数据赋给 var p });
2018-08-18 回复 有任何疑惑可以回复我~
#2

atlunix 回复 慕粉_蓝

哦,明白了。谢谢
2018-09-17 回复 有任何疑惑可以回复我~
 $("p")是指p元素,代码中没有p元素啊,返回肯定是0。


0 回复 有任何疑惑可以回复我~
#1

赞美太阳1123 提问者

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

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信