在jQuery中删除最后一项

时间:2013-09-17 15:26:52

标签: jquery plugins jquery-plugins removechild

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

4 个答案:

答案 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();
       });