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

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

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

正在回答

8 回答

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

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

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

但是不是有两个p吗?


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

赞美太阳1123

不是很懂啊~
2018-07-24 回复 有任何疑惑可以回复我~

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

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

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

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

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命令

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

qq_慕莱坞8430671

厉害了
2017-05-30 回复 有任何疑惑可以回复我~

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


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

田展帆

逻辑非运算符,将布尔值取反
2016-08-19 回复 有任何疑惑可以回复我~

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

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

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

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

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

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

举报

0/150
提交
取消

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

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