2017-02-13 56 views
0

删除操作按钮,当我有一个建立使用数据表的表的页面,并且每行有一个操作按钮,其将从该行一些数据(一个ID,只是一个int)到列表。为了防止用户多次点击每个操作按钮,我做了这样的操作,因此第一次点击它时删除了一行按钮。这很好,直到我意识到按钮回来,如果你切换到表的下一页,然后切换回第一页。古怪的行为从表中的JavaScript

为了解决这个问题,我写了一些JS来比较每列与我的数据的列表,如果该行的数据已经在列表中,它会删除该行的操作按钮。每次使用DataTable的draw.dt函数重新加载表格(例如,当您切换到表格的不同页面并返回时),都会发生这种情况。

问题是,当我切换页面和JavaScript去工作删除按钮,出于某种原因它跳过隔行。例如,如果我点击(因此删除)前三行的动作按钮,切换页面并切换回来,我的JS将删除第1,3,5行上的动作按钮,而不是1,2和3行。一致的是,由于我的草率的JS技能,它必须是某种简单的循环错误,但我找不到它。

下面是代码:

$(document).on('draw.dt', function() { 
    var $allSerialNumbers = $('.box-electrode'); // This is a list of all the rows' action buttons/ID's 

    $('#electrodes li').each(function (i, li) { // This is the list of ID's I'm comparing to 
     var $id = $(li).data('id'); 
     for(var index = 0; index < $allSerialNumbers.length; index++){ 
      if($id == $allSerialNumbers.eq(index).attr('data-id')){ // For each item in my ID list, run through all the rows and see if any Action Button ID's match any on the list 
       $('.box-electrode').eq(index).remove(); // If they do match, remove that Action Button 
      } 
     } 
    }) 
}); 
+0

插入'的console.log($ ID + '== '+ $ allSerialNumbers.eq(指数).attr(' 数据-ID');''的为()'循环之后,看看日志怎么说它。可能是在那里,这是造成问题。发布JFiddle与信息,我可以采取更深入的了解。 – Matthew

回答

0

我不是jQuery的专家,但在你的上线可以remove()重新调整大小的列表,以便它曾经是在索引的元素1现在位于索引0,导致您在增加索引时跳过它?

+0

是的,这是很有可能的。我读通过循环迭代向后可以解决这个问题,但是,当我尝试它没有工作。是否有任何其他简单的方法来解决这个问题? –

+0

当你尝试了什么问题向后遍历?同样的问题? – bluecanary

+0

是啊,同样的问题..似乎没有什么不同。 –