单击时克隆的项目,返回原始形式但不会被删除

时间:2015-10-16 09:12:22

标签: javascript jquery

我克隆了一排元素。克隆后,原始文本框元素将替换为链接。然后,如果用户选择删除克隆的项目,它将以原始形式(即tetxbox)返回到原始位置。这种逆转工作正常。只是没有删除克隆项目。

点击“删除”后,克隆的项目将被删除,但不会全部删除。点击的链接的值将附加到列表中的下一个克隆项目。为什么链接没有被删除?

下面忽略主题名称并关注带有值的链接以RM开头 删除前点击(克隆项目)

enter image description here

删除后点击(克隆项目)
enter image description here

这是我克隆的方式:

function getText(param)
{
  var clony = $("div.clone_this#"+param).remove().clone(true, true).insertBefore("#sub");
  var price = $("input[type=text].text_"+param).val();
 // alert(price);
  clony.find('input[type=text]').replaceWith("<a href='ch'><span class='green' style='font-style:italic;'>RM "+price+"</span></a>");
   clony.find('.cr').append("<a href='del' onclick=removeThis('"+param+"')><img src='/register/cross.png'></a>");

}

这是我删除和更改回原始元素形式的方法。

function removeThis(param)
{
     event.preventDefault(); 


     $("div.clone_this#"+param).detach().appendTo("#sub");
     var price = $("a[href=ch]").text();
     $("div.clone_this#"+param).find($("a[href=ch]").text(price)).replaceWith("<input type='text' onfocusout='getText("+param+")' class='text_"+param+"' val='"+price+"' placeholder='RM'>");

     $("div.clone_this#"+param).find("a[href=del]").remove();
     return false;
}

由jquery

注入的HTML(仅限包装)内容
    <h2>Finally, choose your Course:</h2>
    <div class="row">
        <div class="small-12 medium-12 large-12 columns" class="choosen_subjects">
        </div>
    </div>

    <div class="row">
        <div class="small-12 medium-12 large-12 columns" id="sub">

<!--original list goes here-->
        </div>
    </div>

1 个答案:

答案 0 :(得分:0)

最后,我自己找到了答案。 $(this)的使用解决了我的问题。

function removeThis(param)
{
     event.preventDefault(); 

     $("div.clone_this#"+param).detach().appendTo("#sub");
     var price = $("a[href=ch]").text();
     $(this).find($("#sub a[href=ch]").text(price)).replaceWith("<input type='text' onfocusout='getText("+param+")' class='text_"+param+"' val='"+price+"' placeholder='RM'>");
    $("div.clone_this#"+param).find("a[href=del]").remove();
     return false;
}