我有这个JavaScript代码来添加和删除一些类。下面是代码。有人可以帮我优化这段代码吗?
$(".showTR").click(function () {
if (!$(this).parent().parent('tr').next('tr').hasClass('Row')) {
if (!$(this).parent().parent('tr').next('tr').next('tr').hasClass('Row')) {
if (!$(this).parent().parent('tr').next('tr').next('tr').next('tr').hasClass('Row')) {
if (!$(this).parent().parent('tr').next('tr').next('tr').next('tr').next('tr').hasClass('Row')) {
if (!$(this).parent().parent('tr').next('tr').next('tr').next('tr').next('tr').next('tr').hasClass('Row')) {
if (!$(this).parent().parent('tr').next('tr').next('tr').next('tr').next('tr').next('tr').next('tr').hasClass('Row')) {
} else {
$(this).parent().parent('tr').next('tr').next('tr').next('tr').next('tr').next('tr').next('tr').removeClass('Row')
$(this).hide();
}
}
else {
$(this).parent().parent('tr').next('tr').next('tr').next('tr').next('tr').next('tr').removeClass('Row');
}
} else {
$(this).parent().parent('tr').next('tr').next('tr').next('tr').next('tr').removeClass('Row');
}
} else {
$(this).parent().parent('tr').next('tr').next('tr').next('tr').removeClass('Row');
}
} else {
$(this).parent().parent('tr').next('tr').next('tr').removeClass('Row');
}
}
else {
$(this).parent().parent('tr').next('tr').removeClass('Row');
}
});
代码尝试检测下一个tr
表是否具有类Row
的表。如果没有,则转到下一个tr
,如果是,则从下一个Row
移除类tr
,然后转到下一个tr
,依此类推......
答案 0 :(得分:3)
由于HTML代码不可用,您可以尝试以下方法:
方法1
tr
,为此您可以使用.closest('tr')
或.parents('tr')
tr
.nextAll('tr')
的列表
tr
,也请隐藏.showTR
$(".showTR").click(function() {
var self = this;
var hasUpdated = false;
var trs = $(this).parents('tr').nextAll("tr");
$.each(trs, function(i, tr) {
if (!hasUpdated) {
var $tr = $(tr);
hasUpdated = $tr.hasClass('Row') && $tr.removeClass('Row') && true;
if (i === trs.length - 1) {
$(self).hide()
}
}
})
});
方法2
tr
给有“行”类的父tr
。.showTR
$(".showTR").click(function() {
var tr = $(this).parents('tr').next("tr.Row:first");
if(tr.length){
tr.removeClass("Row");
if(tr.is(':last-child'))
$(this).hide()
}
});