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

为什么bt2不需要去重?

求助:为什么bt2不需要去重?单击一次后,试过变量p中还有内容,但是再单击也不会再把p元素添加到页面?谢谢!

正在回答

5 回答

1.直接点击右边按钮,出现下面添加成功的,是因为内存中还有刚才detach()的p对象,这儿的重置代码没删除内存,所以会造成有这种情况,可以刷新右边页面,不用重置代码。
正常的直接点击右边按钮,其实是执行$("body").append(undefined);,页面中没有添加任何元素

2.#bt1为什么去重,当有p节点的时候才执行删除且保存到变量p中,没有p节点的时候,不执行删除且保存。
如果不去重,即没有p节点的时候,执行删除且保存到变量p中,那右边按钮就是无效的了

3.#bt2为什么不去重,append在是调用原生的appendChild。如果调用appendChild()将已存在文档中的一个节点再次插入,那个节点将自动从它当前的位置删除并在新的位置重新插入:没有必要显式删除该节点。


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

qq_感谢永远有歌把心境道破_03171663

终于看到答案了,上面那些人答的都是什么乱七八糟的,不会就不要强答好吗
2016-11-15 回复 有任何疑惑可以回复我~

因为bt2不是删除,即使多次点击不会丢失数据,但如果是bt1没有去重,连续点击会连续响应,数据会丢失,即使后面点击bt2也无法找回了。

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

其实,bt2也应该去重的;不然你先点击bt2下面又会出现p元素;

  $("#bt2").click(function() {
        if ($("p").length) return; //去重,(只有P元素不出现时才append)
        //把p元素在添加到页面中
        //事件还是存在
        $("body").append(p);
    });


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

有同样的困惑,弄懂了一部分,还是没完全懂。以下是我的一些理解:

加了一行代码:

$("#bt2").click(function() {

    console.log(p);

        $("body").append( p);

    });

在浏览器中调试运行发现,再次单击btn2时,console.log(p)是执行了的,而且运行到$("body").append( p);这一句时没有报错,而是顺利地运行了,只是页面没有变化。

所以,此时内存中应该还是有p的,而且每次btn2的点击事件都执行了,只是 语句$("body").append( p);没有得出我们所想的结果,问题应该在这,但我也还没找到原因,希望有大神能解答~

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

p元素存在的话就执行detach,没有的话就不执行,btn2,只有执行过detach才能执行,不然内存中没有p的模型对象,所以不需要去重。

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

Jurchen 提问者

你好,谢谢你的回复,但我还是有一些疑问。第一步,单击btn1,把p的模型对象放入内存中;第二步,单击btn2,把内存中的变量p添加到页面中。问题来了,如果这时候再单击btn2,这时候的效果是不会再把p添加到页面了,但是我没明白,这时候会执行什么操作,内存中还有没有p的模型对象?谢谢
2016-09-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么bt2不需要去重?

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