有人看到我的代码中的缺陷吗,因为这个问题让我难住了!
function removeMLRow(rowNo) {
$('#ml_organize li:eq(' + (rowNo - 1) + ')').remove();
$($('#ml_organize li:eq(' + (rowNo) + ')').get().reverse()).each(function() {
var newID = 'li' + ($(this).index() - 1);
$(this).attr('id',newID);
});
}
最佳答案
根据这个问题,我不能肯定地说,但我认为这就是你想要的:
function removeMLRow(rowNo) {
$('#ml_organize li').eq(rowNo - 1).remove();
$('#ml_organize li').slice(rowNo -1).each(function() {
var newID = 'li' + ($(this).index() + 1);
$(this).attr('id',newID);
});
}
首先,您可以使用 .eq()
而不是 :eq()
只是为了让事情变得更干净。然后我们使用 .slice()
获取所有<li>
在我们删除的元素之后,并且仅对 <li>
的元素进行编号的。您可以使用 :gt()
(大于索引),但是 .slice()
只是减少了字符串连接(虽然速度更快,但差异无穷小)。
关于jQuery 删除一个元素并对剩余元素重新编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392461/