javascript - js删除一个列表内的某一行,同时删除另一个列表内对应索引的行

查看:68
本文介绍了javascript - js删除一个列表内的某一行,同时删除另一个列表内对应索引的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

RT!
当点击列表A中的某一行并执行删除事件,然后删除列表B内的对应的行,我想通过索引的方法实现。
但我在第一次执行删除事件的时候,对应列表内删除的是正确的对应行,但第二次执行事件的时候,列表A和B被删除的行就对应不不上了,好像是列表A索引值,也就是发生点击事件的列表,就算删除了行,他的索引也不会变,但列表B中的索引就会自动减-,我用 自减减 的方法去调试,怎么弄都不行,折腾一天了,实在是找不出问题所在了。希望大神解惑!!!
下面是我写的测试代码

<ul id="list-1">
        <li>我是列表list-1下的 旧内容 不删</li>
        <li>我是列表list-1下的 旧内容 不删</li>
        <li>我是列表list-1下的 旧内容 不删</li>
        <li>我是列表list-2动态添加过来的新内容第 0 条</li>
        <li>我是列表list-2动态添加过来的新内容第 1 条</li>
        <li>我是列表list-2动态添加过来的新内容第 2 条</li>
        <li>我是列表list-2动态添加过来的新内容第 3 条</li>
    </ul>
    <ul id="list-2">
        <li>我是列表list-2下的新内容第 0 条<input type="button" value="删除"></li>
        <li>我是列表list-2下的新内容第 1 条<input type="button" value="删除"></li>
        <li>我是列表list-2下的新内容第 2 条<input type="button" value="删除"></li>
        <li>我是列表list-2下的新内容第 3 条<input type="button" value="删除"></li>
    </ul>
    <script>
        $(function () {
            var x = $('#list-1 li').length;
            var y = $('#list-2 li').length;
            z = x - y;
            index = 0;
            $('#list-2 li').each(function(index) {
                $(this).on('click', function() {
                    $(this).remove();
                    var a = index+z;
                    $('#list-1 li').eq(a).remove();
                    alert(index)
                });
            });
        })
    </script>

解决方案

$(function() {
  var $list1 = $('#list-1');
  var $list2 = $('#list-2');
  var z = $list1.find('li').length - $list2.find('li').length;
  $list2.on('click',
    'li',
    function() {
        var index = $(this).index()
      console.log(index)
      $(this).remove();
      $list1.find('li:eq('+ (index + z) +')').remove()
    });
})

demo:
https://jsfiddle.net/ycloud/t...

这篇关于javascript - js删除一个列表内的某一行,同时删除另一个列表内对应索引的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆