0

我正在开发一个可以复制项目的插件。我还希望这个插件提供删除最后一个重复项目的选项。例如,用户单击他们的按钮(如果他们愿意,可以是锚点)并复制该项目,附加一个带有递增整数的 ID(例如,duplicated_node_2),然后将复制的项目放置在指定位置。一旦将其放置在那里,用户可以单击一个单独的按钮(或锚点,或其他任何东西),它将删除最后一个重复的项目。

在插件内使用带有 .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

.last()是一种方法

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

您可以尝试在 $(defaultOptions.copyToLocation) 中分解每个 clonedNode 的 id,然后用比现在最后一个更高的数字来抓取它!

或者简单地删除它的最后一个孩子,比如

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

解决了。

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