【问题标题】:Remove Last Item in jQuery删除 jQuery 中的最后一项
【发布时间】:2013-09-17 15:26:51
【问题描述】:

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

【问题讨论】:

    标签: jquery plugins jquery-plugins removechild


    【解决方案1】:

    last 是一个函数。 因此,对代码稍作改动就可以解决问题:

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

    这个想法是让你得到的项目存储库的孩子......然后是最后一个......然后删除......

    【讨论】:

      【解决方案2】:

      .last() 是一种方法

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

      【讨论】:

        【解决方案3】:

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

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

        $(defaultOptions.copyToLocation).children().last().remove();
        

        【讨论】:

          【解决方案4】:

          解决了。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-01-14
            • 1970-01-01
            • 1970-01-01
            • 2014-03-10
            • 1970-01-01
            • 2013-11-01
            • 1970-01-01
            相关资源
            最近更新 更多