2016-08-25 16 views
1

私はdivを複製するために "duplicate"リンクを使用するdivを持っています。そして、最初の "duplicate"リンクを隠します。複製された要素のリンクの表示の切り替えja

クローンされたdivを削除すると、最初の「重複」リンクを再び表示するためにDOMを正しくトラバースできないようです。私は万人を試してみた

$(".remove").click(function() { 
    $(this).parent(".group").remove(); 
}); 

$(".duplicated .remove").click(function() { 
    $(this).parent(".group").find("a.add").show(); 
}); 

JSFiddle

:に戻ってリンクを "重複" の追加クローンのdiv +を削除する

$("a.add").click(function() { 
    $(this).closest(".group").find("a.remove").show(); 
    $(this).closest(".group").clone(true).insertAfter($(this).closest(".group")).addClass("duplicated").find("a.remove").show(); 
    $(this).parent().find("a.add").toggle(); 
}); 

<div class="group"> 
<a class="remove">x</a> // hidden until div is cloned 

<a class="add">Duplicate</a> 
</div> 

div要素のクローンを作成します.prev()、.parent()、.closest()の組み合わせは動作させることができません。

+0

'$(" a.add ")'あなたの例でこのクラスのアンカーはどこにありますか? – j08691

+0

@ j08691 oops、右側のアンカーをサンプルコードに追加するように編集しました。 – bcam7

答えて

1

domが操作されているため、以下のコードは機能しません。これはもはや存在しません。既にクリックイベントを持っているときにクリックイベントを追加/バインドする必要はありません。

$(".duplicated .remove").click(function() { 
     $(this).parent(".group").find("a.add").show(); 
    }); 

あなたの要件を満たすためにこの機能を変更しました。

$(".remove").click(function() { 
    if($(this).parent().find('.add').is(':visible')) 
     $(this).parent('.group').prev('.group').find("a.add").show(); 
    $(this).parent(".group").remove(); 
}); 

これは、現在のノードで重複したリンクが表示されている場合、これは前のノードの「重複」リンクしか表示されません。 これは役に立ちます。

関連する問題