我有一个SQL生成的表,用response.write写入html。该表有一些递归元素(子 - 父),每个新的递归级别通过使用增量类计数来获取该行(第一级获得class = 1,第二级获得class = 2,第三级获得class = 3)等等。)
默认情况下,我隐藏了所有不是level = 1的行,并且在用户单击以显示下一级别(切换)。这部分也很好用,但是如果你显示2级,那么显示3级,然后隐藏2级...... 3级仍然显示(这是不对的)。如果隐藏了子类,那么所有父类也应该隐藏。
我需要点击鼠标,如果切换一个类,则上升一个类并确保它被隐藏,并确保它上面的所有其他类(无论是否可见或隐藏),但仍然允许显示该父类。另外,我从不希望隐藏第1级。
这是我的jQuery,它不是很正确(不允许显示3级和更高级别)。有什么问题,或者我的代码应该是什么让它运作起来?我觉得我非常接近。我相信它切换到3级然后代码运行并隐藏它,不允许我看到3级或更高级别的任何东西。
$(document).ready(function () {
$('#temp td').click(function () {
var clicked = $(this).text();
var level = $(this).closest('tr').attr("class");
$('tr[pn="' + clicked + '"]').toggle();
var currentlevel = parseInt(level); // on click sets recursion level to integer
var nextlevel = currentlevel + 1; // on click sets recursion level to current level plus 1
var maxlevel = parseInt($('.1').length - 3); // on click determines max level of recursion minus offset
if (currentlevel > 1) { // skips this section if clicking on level 1
if ($('.' + nextlevel + ':visible').length) { // checks if parents are visible
for (nextlevel; nextlevel < maxlevel; nextlevel++) { // cycles through all parent classes above current level
$('.' + nextlevel).hide(); // sets parent to hide
};
};
};
});
});
答案 0 :(得分:0)
搞定了。
$(document).ready(function () {
$('#temp td').click(function () {
var clicked = $(this).text();
var level = $(this).closest('tr').attr("class");
$('tr[pn="' + clicked + '"]').toggle();
var currentlevel = parseInt(level);
var nextlevel = currentlevel + 1;
var maxlevel = parseInt($('.1').length - 3);
if ($('.' + nextlevel + ':visible').length) {
}else{
for (nextlevel; nextlevel < maxlevel; nextlevel++) {
$('.' + nextlevel).hide();
};
};
});
});