在Jquery中,我可以在删除后恢复元素吗?

时间:2017-08-01 09:09:23

标签: jquery html jquery-ui

我正在使用克隆功能获取深层复制,然后在选择usertype admin时删除briaid(文本框),对于rest usertype选择我想要取回briaid但我无法做到。

注意:我知道我可以再次创建元素(briaid),但我想知道克隆函数可以实现这一点。

$.ajax({
                cache: false,
                type: "GET",
                url: "http://localhost:49326/WebSite1/Service.asmx/calledfunction",
               data:{},
                contentType: 'application/json',
                dataType: "jsonp",
				jsonp : "callback",
				jsonp: "jsonpcallback",
				 crossDomain: true,
                success: function (result)
				{
				alert(result);
                 
                }
            });

我的JavaScript:

<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>

3 个答案:

答案 0 :(得分:4)

是的,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()

答案 1 :(得分: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);

答案 2 :(得分:0)

我个人会使用detach()而不是remove()。为什么呢?

detach()也会移除元素 BUT ,它会保留所有已分配的事件和信息。因此,当您重复使用该项并且项目已分配event时,event在重新插入后仍然有效。

这是小提琴:

&#13;
&#13;
$(function () {
  var a = null;
  $(".rem").click(function () {
    a = $(".remove").detach();
  });
  $(".rea").click(function () {
    a.prependTo("body");
  });
});
&#13;
<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>
&#13;
&#13;
&#13;