首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除时重新分配多个ID

删除时重新分配多个ID
EN

Stack Overflow用户
提问于 2013-07-16 22:06:12
回答 1查看 43关注 0票数 0

我有下面的HTML。

代码语言:javascript
复制
<ul>
    <li id="myli-1">
        <input id="name-1" />
        <input id="surname-1" /> 
        <span class="remove">X</span>
    </li>
    <li id="myli-2">
        <input id="name-2" />
        <input id="surname-2" />   
        <span class="remove">X</span>
    </li>
    <li id="myli-3">
        <input id="name-3" />
        <input id="surname-3" /> 
        <span class="remove">X</span>
    </li>
    <li id="myli-4">
        <input id="name-4" />
        <input id="surname-4" /> 
        <span class="remove">X</span>
    </li>    
</ul>

用户通过单击第二个X移除第二个

代码语言:javascript
复制
$(".remove").live('click', function() {
      $(this).parent().remove();
});

如何使下面项目的id s、myli-3, name-3, surname-3, myli-4等减少1?

我创造了这个JSFiddle

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 22:19:59

您可以尝试创建自定义过滤器jquery。顺便说一句,.live()从1.7开始就不再受欢迎了。

小提琴

试一试

代码语言:javascript
复制
 $(".remove").click(function() 
 {
       $(this).parent().remove();
       refreshIndex();
 });

 function refreshIndex()
 {
     $('ul li').filter(hasIdWithIndex).each(updateIdWithIndex);
     $('ul li input').filter(hasIdWithIndex).each(updateIdWithIndex);

    function hasIdWithIndex()
    {
     return this.id.search(/\d$/) != -1;
    }

    function updateIdWithIndex()
    {
        var $this   = $(this);
        var id      = this.id;
        var index   = $this.closest('li').index();

        id          = this.id.substring(0, id.length -1); 
        this.id     = id + index; 
   }

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

https://stackoverflow.com/questions/17687833

复制
相关文章

相似问题

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