var p = $("p:first").remove();,這一句代碼中的p是不是其實什么東西都沒有?
$("button:first").click(function() {
? ? ? ? var p = $("p:first").remove();
? ? ? ? p.css('color','red').text('p1通過remove處理后,點擊該元素,事件丟失')
? ? ? ? $("body").append(p);
? ? });
這段代碼里,p是不是沒有東西了?之后給它定義新的樣式和文字,并附加到body中。然后,因為remove()會把節點上的事件與數據都刪除,所以之前添加的點擊事件也早就被刪除了.因此點擊新定義的p節點,沒有彈出消息框,我的理解對吧?
2018-05-29
我也有在這個疑惑,后面我把
?p.css('color','red').text('p1通過remove處理后,點擊該元素,事件丟失')
$("body").append(p);
改成
p.css('color','red')
$("body").append(p);
發現還保留這刪除前的文本
2017-10-03
這行代碼是從文檔流中刪除p元素,然后賦給一個新定義變量p.新p保存了原先刪除的那個對象,但是沒有它的方法和數據。
2017-05-09
不是的,remove()函數的返回值為jQuery類型,返回當前jQuery對象本身。remove()函數會移除文檔中匹配的元素,但不會將匹配元素從jQuery對象中移除,不過remove()只會保留元素本身,其他的諸如元素所關聯的附加數據和綁定事件等都會被移除。