问答详情
源自:4-4 DOM节点删除之保留数据的删除操作detach()

去重这句有必要吗?if (!$("p").length) return;

去重这句有必要吗?if (!$("p").length) return;

反复看了,觉得没有必要放这句【 if (!$("p").length) return;//去重】,放着觉得不够简洁。

老师、同学,你们有更清楚清楚的解释吗。

提问者:吃了饿饿了又吃 2016-12-14 15:25

个回答

  • Stwvon3836464
    2016-12-15 15:01:07
    已采纳

    $("#bt1").click(function() {
            //if (!$("p").length) return; //去重
            //通过detach方法删除元素
            p = $("p").detach()
        });

    bt1的点击事件中,【p】存储了所有p标签的内存模型对象;将【if (!$("p").length) return;
    】这句去掉后,如果连续点击两次,在第一次点击的时候,【p】是可以取到页面中p元素的模型对象;在第二次点击时,由于页面中所有的p标签都已经被删除,【p】的被赋值为空。此时,再点击bt2,就不能将p元素重新添加到页面,因为【p】中没有存储p元素的内存模型对象。

    另外,先执行一次p元素的换位,再提交一次后。先点击bt2会导致在按钮的上下均出现两个p元素。这是因为上一次执行后,【p】已经存储了p元素的内存模型对象,还没被清除,可在bt2的事件中加一句类似bt1的去重语句【if ($("p").length) return;】。

    http://img.mukewang.com/58523e4d0001a97c03350169.jpg


  • 兴__风采依旧
    2016-12-14 20:41:21

    判断p(节点)是否存在,  不存在则返回, 存在则继续执行下面的删除操作,  这样写比较严谨