2017-08-01 17 views
1

我使用克隆功能來獲取深層複製,然後刪除briaid(文本框),當usertype管理被選中,休息usertype選擇我想找回briaid,但我無法做到這一點。在jquery中,刪除後可以返回元素嗎?

注:我知道我可以再次創建元素(briaid),但我想知道這是可能的克隆功能。

<form id="user_login" method="POST">  
<select name="role_id" id="acc_type" style="margin-bottom:10px"> 
    <option value="" selected="">Select Account Type</option>  
    <option value="100" >Admin</option> 
    <option value="200">Agent</option> 
    <option value="300">Technician</option> 
    <option value="400">Support</option> 
    <option value="500">Email</option> 

</select> 
<input type="text" placeholder="Username" name="user_code"> 
<input type="password" placeholder="Password" name="password"> 
<div id="clone_my_element"> 
    <input type="number" id="briaId" placeholder="Bria ID" name="briaId" required="" autocomplete="off" maxlength="6" oninput="this.value=this.value.slice(0,this.maxLength)"> 
</div> 
<button class="btn btn-large btn-success btn-login" type="submit" >Login</button> 

我的javascript:

$("#acc_type").change(function() { 
    var elementclone = $("#clone_my_element").clone(true); 
    if($(this).val() == "100"){ //if admin 
     $("#clone_my_element").remove(); 
    } 
    else{ 
     $("#clone_my_element").remove(); 
     $("#clone_my_element").append(elementclone); //not works 
    } 
}); 

回答

5

是的,remove()功能會發出取出後,在元素,這樣就可以重新使用它,所以只是將其分配給一個臨時變量。事情是這樣的:

$(function() { 
 
    var a = null; 
 
    $(".rem").click(function() { 
 
    a = $(".remove").remove(); 
 
    }); 
 
    $(".rea").click(function() { 
 
    a.prependTo("body"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="remove">This will be removed and readded.</div> 
 
<button class="rem">Remove It</button> 
 
<button class="rea">Readd Back</button>

在深度複製的情況下,只需要使用clone(true, true)並將其存儲在變量和使用就可以了remove()

+0

對我來說,它不工作。請檢查它。 –

+0

@Avnishtiwary你可以嘗試在JSBin中製作[mcve]並分享鏈接嗎?我無法複製這個問題! –

+0

當我運行你的代碼片段,並點擊刪除它按鈕兩次,然後單擊Readd返回沒有任何影響。不知何故,我的錯誤是一樣的。順便謝謝你提到這個問題。 –

0

我認爲問題在於刪除元素(clone_my_element),然後嘗試將已克隆的元素附加到已刪除的元素(DOM中不存在元素)。因此,嘗試在相關位置附加克隆的元素將解決您的問題。

HTML

<div id="container"> 
<div id="clone_my_element"> 
    <input type="number" id="briaId" placeholder="Bria ID" name="briaId" required="" autocomplete="off" maxlength="6" oninput="this.value=this.value.slice(0,this.maxLength)"> 
</div> 
</div> 

JS

$("#clone_my_element").remove(); 
$("#container").append(elementclone); 
0

我個人會用detach()超過remove()。爲什麼?

detach()也刪除元素但是它保留所有分配的事件和信息。因此,當您重新使用它時,該項目分配有eventevent將在重新插入後仍然有效。

這裏是小提琴:

$(function() { 
 
    var a = null; 
 
    $(".rem").click(function() { 
 
    a = $(".remove").detach(); 
 
    }); 
 
    $(".rea").click(function() { 
 
    a.prependTo("body"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="remove">This will be removed and readded.</div> 
 
<button class="rem">Remove It</button> 
 
<button class="rea">Readd Back</button>