我正在开发一个会复制项目的插件。我也希望这个插件提供删除最后复制的项目的选项。例如,用户单击他们的按钮(如果他们想要可以是锚)并且它复制项目,附加具有递增整数的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和插件创建仍然相当新。如果您对代码组织或效率提示有积极的反馈,请随时加入。
编辑:我遗漏了 last 函数的()。谢谢你的捕获。我实际上在IDE中有正确的代码。
答案 0 :(得分:1)
最后是一个功能。 所以代码中的一点改变可能会起到作用:
$(defaultOptions.removeButton).click(function(){
$(defaultOptions.copyToLocation).children().last().remove();
});
这个想法是让你得到的物品储存库的孩子......然后是最后一个...然后删除......
答案 1 :(得分:0)
.last()是一种方法
$(defaultOptions.removeButton).click(function(){
$(defaultOptions.copyToLocation).last().remove();
^^
});
答案 2 :(得分:0)
您可以尝试在$(defaultOptions.copyToLocation)中分解每个clonedNode的id,并使用比现在最后一个更高的数字来抓取它!
或者只是删除其中的最后一个孩子,例如
$(defaultOptions.copyToLocation).children().last().remove();
答案 3 :(得分:0)
解决。
$(defaultOptions.removeButton).click(function(){
$(defaultOptions.copyToLocation).children().last().remove();
});