if (!$("p").length) return; 去重 有大神能解释下去重是什么鬼?

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

爱打游戏的程序猿

2016-07-29 09:53

if (!$("p").length) return;  把这行代码删除。。多次点击删除p元素,点击移动p元素就没有效果了,为什么?这句话能有大神解释下吗

写回答 关注

8回答

  • 赞美太阳1123
    2018-07-24 10:21:02

    $("p").length返回的不应该是2吗?

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

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

    但是不是有两个p吗?


    赞美太阳11...

    不是很懂啊~

    2018-07-24 10:21:41

    共 1 条回复 >

  • 龍彦宏V
    2017-02-17 09:16:55

    我测试了一下,执行两侧death基本上是从内存中彻底删除了,所以回不来了

  • 啊啊啊啊123
    2016-09-01 10:09:09

    if (!$("p").length)是if ($("p").length == null)的逼格写法 

  • 田展帆
    2016-08-19 15:55:07

    if (!$("p").length) return; 

    if语句接收一个布尔值,如果布尔值为true则执行接下来的语句,布尔值为false则执行else关键词后的语句。

    JavaScript语言有个特点”隐式转换”:在需要布尔值会将其他类型自动往布尔值转换$("p").length本来返回的是number类型的0,但被自动转化为布尔值false了。前面也说了,如果IF语句接收到布尔值false就会执行else关键词后的语句,这里没有写else后的语句。所老师把在前面加了个!,这个东西时一个叫“逻辑非”的操作符,作用就是将布尔值取反,true变成false,false变成true。

    所以if (!$("p").length) return;可以翻译成  if(p的长度为零的话~)就直接返回。不执行下一条的detach命令

    qq_慕莱坞...

    厉害了

    2017-05-30 08:54:13

    共 1 条回复 >

  • 大神在路上
    2016-08-04 15:42:05

    if (!$("p").length) return; 去重中,!叹号是什么意思 啊


    田展帆

    逻辑非运算符,将布尔值取反

    2016-08-19 15:57:02

    共 1 条回复 >

  • 小儒生
    2016-08-01 10:48:57

    应该是当你多次点击之后p元素删除完了,这时候再点击删除键那么p = $("p").detach()中的p则会赋值为NULL,这时候你怎么添加都不会有效果了

  • 694473412
    2016-07-31 11:37:08

    从你自测的效果看,多次detach会使托管的p真正丢失。这里做去重,可能就是为了防止多次点击删除导致的丢失吧

  • ijhifgyi
    2016-07-29 10:18:37

    如果p的长度为空,停止,字面就这么个意思,你就光这么一句话,能力有限看不出来

jQuery基础(二)—DOM篇

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

114014 学习 · 590 问题

查看课程

相似问题