jQuery - 创建可更改的序列号

时间:2013-02-22 07:59:05

标签: jquery

我正在尝试使用jquery构建一个简单的表单。通过构建表单,我的意思是我正在根据点击的按钮将输入准备好发布。

所以例如我可能有一个像这样的变量......

var1 = "<input type='text' value='some product' />";

当点击相关按钮时,会将html附加到更多相同的位置。有点像购物车。

我遇到的问题是,我需要按顺序对它们进行编号,这样当输入添加到列表时,它会创建相关的索引号,这样就会结束

<input id="number1" type="text" />
<input id="number2" type="text" />
<input id="number3" type="text" />
<input id="number4" type="text" /> etc etc...

这很简单,我只使用了var = count ++ 当我想要能够从列表中删除项目时,问题出现了。我正在使用它删除列表 $(本)。家长( 'TR')除去();

但是当你从列表中间删除一个时,数字就不是连续的了。所以我的问题是如何将这些数字保持连续。是我如何首先添加数字还是有一种“重新访问”计数变量的先前实例的方法?

我真的不能举一个例子来说明我曾在这里尝试过,因为我完全失去了它。我已经浏览了互联网,我不确定什么是可能的。

我不是在懒惰,只是在寻找能够提供解决方案的人,但如果你能指出我正确的方向,那就太好了。

1 个答案:

答案 0 :(得分:0)

实际上,我发现这个问题很有趣,我花了一些时间来创造答案。

我认为一个特殊的jquery插件可以帮助你,我在下面发布。 用法示例就是这个小提琴:http://jsfiddle.net/FJRNh/

它的工作方式:

  • 隔离“前缀”部分 - 在您的案例编号
  • 查找所选元素的所有兄弟节点,其id以前缀
  • 开头
  • 删除所需元素
  • 重新编号兄弟姐妹

它有一个缺点 - 它会重新编号所有具有相同前缀的项目,即使它们之前没有编号,所以如果你有id,如number1,number2,number3,number_foot,那么number_foot也会重新编号。这可以通过在内循环中添加正则表达式测试来避免。但我相信如果你记住这个限制,那么提供的代码就足够了

(function ($) {
    $.fn.renumberingRemove = function () {
        var $this = $(this);
        var mthisid = $this.attr('id');
        var name = $this[0].nodeName;
        var numberp = /\D+/.exec($this.attr('id'));              
        var sibl = $this.parent().children(name+"[id^='"+numberp+"']");
        $this.remove();
        var istart = 1;
        sibl.each(function () {      
            if (this.id != mthisid) {
                $(this).attr('id', numberp + istart++);
            }
        });        
    };
})(jQuery);