我正在开发一个可以复制项目的插件。我还希望这个插件提供删除最后一个重复项目的选项。例如,用户单击他们的按钮(如果他们愿意,可以是锚点)并复制该项目,附加一个带有递增整数的 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 中有正确的代码。