亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號