首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery :当列表中的1被删除时,如何自动调整数字列表?

jQuery :当列表中的1被删除时,如何自动调整数字列表?
EN

Stack Overflow用户
提问于 2015-04-18 04:17:47
回答 4查看 2K关注 0票数 4

我想要自动调整使用.append()创建的数字列表。例如,如果在列表中添加了4个项目,它们将分别从2-4中编号,如果我删除了第3项,则项目4将自动为第3号,如果我添加了一个新项,它将是列表中的最后一个项。下面是我的代码。

代码语言:javascript
复制
$('#display').click(function() {
  $('#show').show();
});
var c = 1;
$('#append').click(function() {
  var cnt = $('.cnt').val();
  for (var i = 0; i < cnt; i++) {
    c++;
    $('#inputs').append("<div id='inputs' name='" + c + "'>" + c + ".)<button id='remove' name='" + c + "'>X</button></div>");
  }
});
$(document).on('click', '#inputs #remove', function() {
  var nm = $(this).attr('name');
  $('div[name="' + nm + '"]').remove();
  c--;
});
代码语言:javascript
复制
#show {
  display: none;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://raw.githubusercontent.com/igorescobar/jQuery-Mask-Plugin/master/src/jquery.mask.js"></script>
<button id='display'>Display</button>
<div id='show'>
  <br>
  <input type='text' class='cnt' value='1' placeholder="num of append" />
  <button id='append'>+</button>
  <br>
  <div id='inputs'>
    1.)
  </div>
</div>

这是代码的小提琴

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-18 05:10:58

这是你的答案

小提琴在这里

代码语言:javascript
复制
$('#display').click(function() {
  $('#show').show();
});
var c = 1;
$('#append').click(function() {
  var cnt = $('.cnt').val();
  for (var i = 0; i < cnt; i++) {
    c++;
    $('#inputs').append("<div class='inputs' name='" + c + "'><span class='number'>" +c + "</span>.)<button class='remove' name='" + c + "'>X</button></div>");
  }
});
$(document).on('click', '#inputs .remove', function() {
  var nm = $(this).attr('name');
  $('div[name="' + nm + '"]').remove();
  c--;
resetCount();
});
function resetCount(){
    $('#inputs div.inputs').each(function(i){
        $('.number', $(this)).text(i+2);
        $('input', $(this)).attr('name', i+2);
    });
}
代码语言:javascript
复制
#remain,
#total {
  background-color: #333;
  width: 60px;
  height: 20px;
  color: #fff;
  padding: 0 10px;
}
input:focus {
  background-color: #000;
  color: #fff;
}
input {
  background-color: #ccc;
}
#show {
  display: none;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button id='display'>Display</button>
<div id='show'>
  <br>
  <input type='text' class='cnt' value='1' placeholder="num of append" />
  <button id='append'>+</button>
  <br>
  <div id='inputs'>
    1.)
  </div>
</div>

票数 2
EN

Stack Overflow用户

发布于 2015-04-18 05:00:12

您不应该对不同的元素使用相同的ID。

另外,您可以通过创建一个函数,在每个添加/删除事件之后重置计数元素。

在jQuery中创建和附加元素时,最好使用以下语法:

代码语言:javascript
复制
$('<ELEMENT TAG/>',{
  ATTRIBUTE: VALUE
});

在jQuery中循环元素时,最好使用$.each

代码语言:javascript
复制
$('#append').on('click', function(){
    $('<div/>', {
        'class': 'inputs',
        html: '<span class="count"></span><input type="text" class="time" name="0" value="00:00:00"/><button>X</button>'
    }).appendTo('#inputs');
    resetInputsCount();
});

$('#inputs').on('click', '.inputs button', function(){
    var $this = $(this);
    $this.parent().remove();
    resetInputsCount();
});

//The function that resets the count span text and the name value based on the current count of elements
function resetInputsCount(){
    //looping through elements
    $('#inputs div.inputs').each(function(i){
        //caching the current element in a var named $this
        var $this = $(this);
        //changing the count span text to i+2 the 2 is added because the index starts at 0 and there is already one element 1.)
        $('.count', this).text((i+2) + '.) ');
        //change the value of the input name
        $('input', $this).attr('name', i+2);
    });
}

基于JSFiddle的演示

票数 2
EN

Stack Overflow用户

发布于 2015-04-18 05:05:30

我知道已经有答案了,但既然我做了这项工作,我还是把它发出来吧。

下面是这个例子的小提琴

下面是代码:

Html

代码语言:javascript
复制
<div id='button'>
 <span>Add</span>
</div>
<div id='content'></div>

CSS

代码语言:javascript
复制
#button span {
    padding: 5px 15px;
    background: #ccc;
    cursor: pointer;
}
#button {
    margin: 5px 0;
}
.delete {
    cursor: pointer;
    padding: 0 5px;
    border: 1px solid gray;
}

jQuery

代码语言:javascript
复制
$(document).ready(function() {
    var index = 1;
    $('#button').on('click', function() {
        var add = '<div class="new"><span class="number">' + index + '</span><input type="text"/><span class="delete">x</span></div>';
        $('#content').append(add);
        index++;
    });
    $(document).on('click', '.delete', function() {
        index--;
        $(this).parent().remove();
        var index2 = 1;
        var newelement = $('.new');
        $(newelement).each(function() {
            $(this).find('.number').text(index2);
            index2++;
        });
    });

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29712800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档