アイテムを複製するプラグインに取り組んでいます。また、このプラグインに、複製された最後のアイテムを削除するオプションを提供したいと考えています。たとえば、ユーザーがボタン (必要に応じてアンカーにすることもできます) をクリックすると、アイテムが複製され、増分された整数 (複製された_ノード_2 など) を持つ ID が追加され、複製されたアイテムが指定された場所に配置されます。これがそこに配置されると、ユーザーは別のボタン (またはアンカーなど) をクリックして、複製された最後のアイテムを削除できます。
プラグイン内の .click でセレクターを使用すると、アイテムがハードコードされます。プラグインが最後に複製されたものを削除するようにしたいと思います。また、 $('div #duplicated_node_2').last().remove() などのようなものを使用する必要もありません。
カウンター変数を配列に入れて最後のアイテムを参照させることを考えてみましたが、それは私がやろうとしていることには少し複雑すぎるようです。このプロセスを一般化する方法について誰かアイデアがありますか?
これがコードの一部です。複製プロセスと、デフォルトのコピー先の場所への追加を扱います。
(function ( $ ) {
$.fn.myDuplicatingFunction = function( options ){
...
... setting up the defaultOptions and checking if the idPrefix is undefined or not ...
... [omitted from post]
...
var nodeToClone = this;
var n = 1; // counter declared
$(defaultOptions.duplicateButton).click(function(){
n++; // increment that counter
var clonedNode = nodeToClone.clone(true); // clone the node and assign to new var
clonedNode.attr('id',defaultOptions.idPrefix + '_' + n); // update attr ID with the new one
$(clonedNode).appendTo(defaultOptions.copyToLocation); // append to location
});
/// trying to figure out the removal process
$(defaultOptions.removeButton).click(function(){
$(defaultOptions.copyToLocation).last().remove();
});
}
}(jQuery));
フィードバックをお寄せいただきありがとうございます。
注: jQuery とプラグインの作成に関しては、まだかなり初心者です。コードの編成や効率化のヒントについて肯定的なフィードバックがある場合は、遠慮なくご連絡ください。
編集:最後の関数の () を省略しました。キャッチしていただきありがとうございます。私は実際にIDEに正しいコードを持っていました。