爱打游戏的程序猿
2016-07-29 09:53
if (!$("p").length) return; 把这行代码删除。。多次点击删除p元素,点击移动p元素就没有效果了,为什么?这句话能有大神解释下吗
$("p").length返回的不应该是2吗?
length
属性的返回值是Number类型,返回该jQuery对象封装的DOM元素的个数。
如果该对象是一个空的jQuery对象,没有封装任何元素,则返回0。
但是不是有两个p吗?
我测试了一下,执行两侧death基本上是从内存中彻底删除了,所以回不来了
if (!$("p").length)是if ($("p").length == null)的逼格写法
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命令
if (!$("p").length) return; 去重中,!叹号是什么意思 啊
应该是当你多次点击之后p元素删除完了,这时候再点击删除键那么p = $("p").detach()中的p则会赋值为NULL,这时候你怎么添加都不会有效果了
从你自测的效果看,多次detach会使托管的p真正丢失。这里做去重,可能就是为了防止多次点击删除导致的丢失吧
如果p的长度为空,停止,字面就这么个意思,你就光这么一句话,能力有限看不出来
jQuery基础(二)—DOM篇
114014 学习 · 590 问题
相似问题