2016-11-17 39 views
1

如何將元素保存到變量中,然後將其刪除,但不會丟失變量數據?刪除元素時不要丟失可變數據

var elements = $('.element'); 
elements.remove(); 
elements.insertAfter('.insertAfterElement'); 
+1

許多選項在這裏 - 保存副本,隱藏元素,只提取你需要的數據等等...... – WillardSolutions

回答

4

使用.detach()而不是.remove()

從文檔:

的.detach()方法是一樣的一個.remove(),不同之處在於.detach()保持與移除的元件相關聯的所有的jQuery的數據。此方法在以後將被移除的元素重新插入DOM時非常有用。

0

http://api.jquery.com/remove/

除了元素本身,所有結合的事件和與該元件相關聯的jQuery 數據被除去。要刪除元素 而不刪除數據和事件,請改爲使用.detach()

http://api.jquery.com/detach/

.detach()的方法是相同的.remove(),不同之處在於 .detach()保持與除去 元件相關聯的所有的jQuery的數據。如果刪除的元素將在稍後重新插入到DOM中,此方法非常有用。

但是,當然,如果您要立即將其插回到文檔中,則沒有意義使用該文檔。

$('button').on('click', function() { 
 
    $('.element').insertAfter('.insertAfterElement'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>Wrapper <span class="element">Element</span></div> 
 
<button>Click me</button> 
 
<div class="insertAfterElement"></div>

0

http://api.jquery.com/remove/

要刪除的要素而不除去的數據和事件,使用.detach()代替。

所以,你會使用

var elements = $('.element'); 
elements.detach(); 
// later: 
elements.insertAfter('.insertAfterElement'); 

不過,如果你只想立刻四處移動元素,你並不需要從DOM明確刪除它們。只要將它們插入不同的位置,就會隱式地將它們從舊位置移除(而不是將它們克隆)。所以簡單地使用

$('.element').insertAfter('.insertAfterElement');