我正在尝试使用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')除去();
但是当你从列表中间删除一个时,数字就不是连续的了。所以我的问题是如何将这些数字保持连续。是我如何首先添加数字还是有一种“重新访问”计数变量的先前实例的方法?
我真的不能举一个例子来说明我曾在这里尝试过,因为我完全失去了它。我已经浏览了互联网,我不确定什么是可能的。
我不是在懒惰,只是在寻找能够提供解决方案的人,但如果你能指出我正确的方向,那就太好了。
答案 0 :(得分:0)
实际上,我发现这个问题很有趣,我花了一些时间来创造答案。
我认为一个特殊的jquery插件可以帮助你,我在下面发布。 用法示例就是这个小提琴:http://jsfiddle.net/FJRNh/
它的工作方式:
它有一个缺点 - 它会重新编号所有具有相同前缀的项目,即使它们之前没有编号,所以如果你有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);