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

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

appendTo li:last問題

<!DOCTYPE html>

<html>


<head>

? ? <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

? ? <title></title>

? ? <style>

? ? .left {

? ? ? ? width: auto;

? ? ? ? height: 150px;

? ? }

? ??

? ? .left div {

? ? ? ? width: 150px;

? ? ? ? height: 120px;

? ? ? ? padding: 5px;

? ? ? ? margin: 5px;

? ? ? ? float: left;

? ? ? ? background: #bbffaa;

? ? ? ? border: 1px solid #ccc;

? ? }

? ? </style>

? ? <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>

</head>


<body>

? ? <h2>add方法()</h2>

? ? <div class="left first-div">

? ? ? ? <div class="div">

? ? ? ? ? ? <ul>

? ? ? ? ? ? ? ? <li>list item 1</li>

? ? ? ? ? ? ? ? <li>list item 2</li>

? ? ? ? ? ? ? ? <li>list item 3</li>

? ? ? ? ? ? </ul>

? ? ? ? ? ? <p>新的p元素</p>

? ? ? ? </div>

? ? </div>

? ? <div class="right"></div>

? ? <br/>

? ? <button>點擊:add傳遞元素標簽</button>

? ? <button>點擊:add傳遞html結構</button>

? ? <script type="text/javascript">

? ? $("button:first").click(function() {

? ? ? ? ?//把p元素添加到li的合集中

? ? ? ? ?//$('li').add('p').css('background', 'red')

? ? ? ? ?$('li').add('<li>list item 4</li>').appendTo($('li:last'))

? ? })

? ? </script>

? ? <script type="text/javascript">

? ? $("button:last").click(function() {

? ? ? ? ?//把html結構'<p>新的p元素</p>'

? ? ? ? ?//加入到li的合集中,為了能夠在頁面上顯示

? ? ? ? ?//需要再重新appendTo到指定的節點處

? ? ? ? ?//值得注意:整個結構位置都改變了

? ? ? ? ?$('li').add('<p>新的p元素</p>').appendTo($('.right'))

? ? })

? ? </script>

</body>


</html>

運行第一次是

http://img1.sycdn.imooc.com//59703d2e0001e4a602130147.jpg

http://img1.sycdn.imooc.com//59703d2e0001d9b501860269.jpg

運行第二次是

http://img1.sycdn.imooc.com//59703d410001fefe01900294.jpg

http://img1.sycdn.imooc.com//59703d4100015c3f01900102.jpg

哪位大神可以幫忙解釋一下這是為什么呀


正在回答

3 回答

你語句后面加個;號結束語句就行了,老師那個錯誤示范- -

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

我要SSR

雖然案例中沒發生錯誤,但是你一改問題就呈現出來了。所以要注意這些細節
2017-07-21 回復 有任何疑惑可以回復我~
#2

qq_與陌Dance_0 提問者

加了分號結果一樣啊
2017-07-21 回復 有任何疑惑可以回復我~
#3

我要SSR 回復 qq_與陌Dance_0 提問者

把你的代碼復制下來跑了一邊,剛了解清楚這是怎么回事,你在li集合中添加一個HTML元素這里沒問題,但是你在最后一個li元素中插入就有問題了,因為add()返回的是新的jquery對象,但這個新的jquery對象里又包括了最后一個li元素,其實這里就應該算錯了,appendTo()方法中,如果插入的內容是已存在的元素,它將從當前位置被移除,并在被選元素的結尾被插入。但是這里沒有被移除,被你硬生生插入進去,這里都發生了錯誤,然后第二次插入的時候他就找不到指定點插入節點。
2017-07-24 回復 有任何疑惑可以回復我~
#4

qq_與陌Dance_0 提問者 回復 我要SSR

大概了解了
2017-07-25 回復 有任何疑惑可以回復我~
查看1條回復

第一次點擊可以理解了、第二次還是理解不來

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

運行第一次是http://img1.sycdn.imooc.com//59703c9d0001d9b501860269.jpghttp://img1.sycdn.imooc.com//59703cba0001e4a602130147.jpg

運行第二次是

http://img1.sycdn.imooc.com//59703cfc0001fefe01900294.jpghttp://img1.sycdn.imooc.com//59703cfd00015c3f01900102.jpg

哪位大神可以幫忙解釋一下這是為什么呀


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

Kayber

應該是先獲取到li集合,然后往這個li集合里面添加p,但是這個p并不會顯示,這樣便用appendTo把這個集合移動到div.right里面(因為appendTo是動態添加p繼而顯示p),注意是移動,不是復制,就相當于剪切操作,所以ul里面沒有東西了。
2017-07-20 回復 有任何疑惑可以回復我~
#2

qq_與陌Dance_0 提問者 回復 Kayber

我觸發的事件是$('li').add('<li>list item 4</li>').appendTo($('li:last')),沒有div.right,大哥你是不是看錯了
2017-07-21 回復 有任何疑惑可以回復我~
#3

Kayber 回復 qq_與陌Dance_0 提問者

你說的不是第一個按鈕事件嘛,我說的是第二個,,,第一個也好理解啊,先獲取到li集合,然后再往這個集合里面添加一個li,然后再把這個集合移動到最后一個li標簽也就是li3里面。
2017-07-21 回復 有任何疑惑可以回復我~
#4

qq_與陌Dance_0 提問者 回復 Kayber

可是第二次點擊的時候就出現問題了
2017-07-21 回復 有任何疑惑可以回復我~
#5

Kayber 回復 qq_與陌Dance_0 提問者

Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child element contains the parent.這句代碼就是你說的第二次點擊出錯,意思是:捕獲DOM對象異常:執行往最后的li添加節點失?。盒碌淖釉匕烁冈亍?。。怎么說呢,應該就是邏輯出錯了,新的子元素怎么能包含父元素呢。
2017-07-21 回復 有任何疑惑可以回復我~
#6

qq_與陌Dance_0 提問者 回復 Kayber

后面我看了一下感覺應該就是這個異常、然后就直接什么都沒添加進去、直接清空了、但是我不清楚為什么包含了父元素、邏輯也確實有點亂。。
2017-07-24 回復 有任何疑惑可以回復我~
#7

Kayber 回復 qq_與陌Dance_0 提問者

你點擊第一次,li中都包含了三個li,然后點擊第二次,到底是往父級的那個li還是父級li里面的li:last添加新的集合,應該是這個問題,,,有點兒亂。但是一般都是點擊第一次然后注銷按鈕了吧。
2017-07-24 回復 有任何疑惑可以回復我~
#8

qq_與陌Dance_0 提問者 回復 Kayber

好的、謝謝了、剛學一段時間js和jQuery還不是很熟練,謝謝解惑、
2017-07-24 回復 有任何疑惑可以回復我~
查看5條回復

舉報

0/150
提交
取消

appendTo li:last問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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