0

アイテムを複製するプラグインに取り組んでいます。また、このプラグインに、複製された最後のアイテムを削除するオプションを提供したいと考えています。たとえば、ユーザーがボタン (必要に応じてアンカーにすることもできます) をクリックすると、アイテムが複製され、増分された整数 (複製された_ノード_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に正しいコードを持っていました。

4

4 に答える 4

1

最後は関数です。したがって、コードを少し変更するだけでうまくいくかもしれません。

$(defaultOptions.removeButton).click(function(){
        $(defaultOptions.copyToLocation).children().last().remove();
    });

アイデアは、取得したアイテムのリポジトリの子を取得することです...次に最後のものを...次に削除します...

于 2013-09-17T15:33:02.710 に答える
0

$(defaultOptions.copyToLocation) 内の clonedNode の ID をそれぞれ爆発させて、最後の ID よりも大きい番号で取得することができます。

または、その最後の子を単純に削除します。

$(defaultOptions.copyToLocation).children().last().remove();
于 2013-09-17T15:35:52.657 に答える
0

.last()はメソッドです

$(defaultOptions.removeButton).click(function(){
   $(defaultOptions.copyToLocation).last().remove();
                                        ^^
});
于 2013-09-17T15:34:14.873 に答える
0

解決しました。

$(defaultOptions.removeButton).click(function(){
           $(defaultOptions.copyToLocation).children().last().remove();
       });
于 2013-09-18T01:47:32.273 に答える