課程
/前端開(kāi)發(fā)
/jQuery
/jQuery基礎(chǔ)(二)—DOM篇
求助:為什么bt2不需要去重?單擊一次后,試過(guò)變量p中還有內(nèi)容,但是再單擊也不會(huì)再把p元素添加到頁(yè)面?謝謝!
2016-09-01
源自:jQuery基礎(chǔ)(二)—DOM篇 4-4
正在回答
1.直接點(diǎn)擊右邊按鈕,出現(xiàn)下面添加成功的,是因?yàn)閮?nèi)存中還有剛才detach()的p對(duì)象,這兒的重置代碼沒(méi)刪除內(nèi)存,所以會(huì)造成有這種情況,可以刷新右邊頁(yè)面,不用重置代碼。正常的直接點(diǎn)擊右邊按鈕,其實(shí)是執(zhí)行$("body").append(undefined);,頁(yè)面中沒(méi)有添加任何元素
2.#bt1為什么去重,當(dāng)有p節(jié)點(diǎn)的時(shí)候才執(zhí)行刪除且保存到變量p中,沒(méi)有p節(jié)點(diǎn)的時(shí)候,不執(zhí)行刪除且保存。如果不去重,即沒(méi)有p節(jié)點(diǎn)的時(shí)候,執(zhí)行刪除且保存到變量p中,那右邊按鈕就是無(wú)效的了
3.#bt2為什么不去重,append在是調(diào)用原生的appendChild。如果調(diào)用appendChild()將已存在文檔中的一個(gè)節(jié)點(diǎn)再次插入,那個(gè)節(jié)點(diǎn)將自動(dòng)從它當(dāng)前的位置刪除并在新的位置重新插入:沒(méi)有必要顯式刪除該節(jié)點(diǎn)。
qq_感謝永遠(yuǎn)有歌把心境道破_03171663
因?yàn)閎t2不是刪除,即使多次點(diǎn)擊不會(huì)丟失數(shù)據(jù),但如果是bt1沒(méi)有去重,連續(xù)點(diǎn)擊會(huì)連續(xù)響應(yīng),數(shù)據(jù)會(huì)丟失,即使后面點(diǎn)擊bt2也無(wú)法找回了。
其實(shí),bt2也應(yīng)該去重的;不然你先點(diǎn)擊bt2下面又會(huì)出現(xiàn)p元素;
??$("#bt2").click(function()?{ ????????if?($("p").length)?return;?//去重,(只有P元素不出現(xiàn)時(shí)才append) ????????//把p元素在添加到頁(yè)面中 ????????//事件還是存在 ????????$("body").append(p); ????});
有同樣的困惑,弄懂了一部分,還是沒(méi)完全懂。以下是我的一些理解:
加了一行代碼:
$("#bt2").click(function() {
? ? console.log(p);
? ? ? ? $("body").append( p);
? ? });
在瀏覽器中調(diào)試運(yùn)行發(fā)現(xiàn),再次單擊btn2時(shí),console.log(p)是執(zhí)行了的,而且運(yùn)行到$("body").append( p);這一句時(shí)沒(méi)有報(bào)錯(cuò),而是順利地運(yùn)行了,只是頁(yè)面沒(méi)有變化。
所以,此時(shí)內(nèi)存中應(yīng)該還是有p的,而且每次btn2的點(diǎn)擊事件都執(zhí)行了,只是?語(yǔ)句$("body").append( p);沒(méi)有得出我們所想的結(jié)果,問(wèn)題應(yīng)該在這,但我也還沒(méi)找到原因,希望有大神能解答~
p元素存在的話就執(zhí)行detach,沒(méi)有的話就不執(zhí)行,btn2,只有執(zhí)行過(guò)detach才能執(zhí)行,不然內(nèi)存中沒(méi)有p的模型對(duì)象,所以不需要去重。
Jurchen 提問(wèn)者
舉報(bào)
jQuery第二階段開(kāi)啟DOM修煉,了解創(chuàng)建、插入、刪除與替換
1 回答去重 是什么意思???
2 回答去重怎么理解
8 回答if (!$("p").length) return; 去重 有大神能解釋下去重是什么鬼?
5 回答為什么需要使用document.querySelector而不是使用$("body")呢?
2 回答請(qǐng)問(wèn)代碼中的“去重”是什么意思?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-10-27
1.直接點(diǎn)擊右邊按鈕,出現(xiàn)下面添加成功的,是因?yàn)閮?nèi)存中還有剛才detach()的p對(duì)象,這兒的重置代碼沒(méi)刪除內(nèi)存,所以會(huì)造成有這種情況,可以刷新右邊頁(yè)面,不用重置代碼。
正常的直接點(diǎn)擊右邊按鈕,其實(shí)是執(zhí)行$("body").append(undefined);,頁(yè)面中沒(méi)有添加任何元素
2.#bt1為什么去重,當(dāng)有p節(jié)點(diǎn)的時(shí)候才執(zhí)行刪除且保存到變量p中,沒(méi)有p節(jié)點(diǎn)的時(shí)候,不執(zhí)行刪除且保存。
如果不去重,即沒(méi)有p節(jié)點(diǎn)的時(shí)候,執(zhí)行刪除且保存到變量p中,那右邊按鈕就是無(wú)效的了
3.#bt2為什么不去重,append在是調(diào)用原生的appendChild。如果調(diào)用appendChild()將已存在文檔中的一個(gè)節(jié)點(diǎn)再次插入,那個(gè)節(jié)點(diǎn)將自動(dòng)從它當(dāng)前的位置刪除并在新的位置重新插入:沒(méi)有必要顯式刪除該節(jié)點(diǎn)。
2016-09-23
因?yàn)閎t2不是刪除,即使多次點(diǎn)擊不會(huì)丟失數(shù)據(jù),但如果是bt1沒(méi)有去重,連續(xù)點(diǎn)擊會(huì)連續(xù)響應(yīng),數(shù)據(jù)會(huì)丟失,即使后面點(diǎn)擊bt2也無(wú)法找回了。
2016-09-14
其實(shí),bt2也應(yīng)該去重的;不然你先點(diǎn)擊bt2下面又會(huì)出現(xiàn)p元素;
2016-09-11
有同樣的困惑,弄懂了一部分,還是沒(méi)完全懂。以下是我的一些理解:
加了一行代碼:
$("#bt2").click(function() {
? ? console.log(p);
? ? ? ? $("body").append( p);
? ? });
在瀏覽器中調(diào)試運(yùn)行發(fā)現(xiàn),再次單擊btn2時(shí),console.log(p)是執(zhí)行了的,而且運(yùn)行到$("body").append( p);這一句時(shí)沒(méi)有報(bào)錯(cuò),而是順利地運(yùn)行了,只是頁(yè)面沒(méi)有變化。
所以,此時(shí)內(nèi)存中應(yīng)該還是有p的,而且每次btn2的點(diǎn)擊事件都執(zhí)行了,只是?語(yǔ)句$("body").append( p);沒(méi)有得出我們所想的結(jié)果,問(wèn)題應(yīng)該在這,但我也還沒(méi)找到原因,希望有大神能解答~
2016-09-01
p元素存在的話就執(zhí)行detach,沒(méi)有的話就不執(zhí)行,btn2,只有執(zhí)行過(guò)detach才能執(zhí)行,不然內(nèi)存中沒(méi)有p的模型對(duì)象,所以不需要去重。