我正在使用Ajax创建表,一些可见的列,有些不可见。
我知道有很多做事的方法,下面是我的工作方式。
以下代码中的“ 17”表示需要可选列时来自cookie集的一个值。在表的初始加载中,将读取cookie,并打开cookie中列出的所有列。这部分的工作就好了。
任何编辑给Ajax表使表的刷新其恢复原来的状态,隐藏列17,这意味着该Cookie必须再次引用,以确定用户想要看什么,并且列是再次切换。这部分效果不佳。在表加载时,一切正常,在第一次刷新表以及随后进行的所有表刷新时,在第一次刷新将其关闭后,我都无法获得列17的切换。
据我所知,不管列17的当前可见状态如何,都在发生toggle()。 这是我用来测试和切换的代码。
if (sh == '17') {
if ($(".toggleCNTY").is(':visible' )) {
// 'true' So do Nothing because this its already visible
} else if (!$(".toggleCNTY").is(':visible' )) {
// 'false' So toggle it to be visible
$(".toggleCNTY").toggle();
}
}
尽管我可以确认的是,代码只进入各的,如果和其他的循环,因为它应该在当列已经是可见的另一切换发生在年底。
有人看到原因吗?
答案 0 :(得分:1)
首先,我建议您简化代码,删除不必要的逻辑,例如:
if (sh === '17' && !$(".toggleCNTY").is(':visible')) {
$(".toggleCNTY").toggle();
}
尽管我不认为这会单独解决您的问题。您可以在浏览器控制台中检查元素的显示属性。似乎函数is('visible')总是返回false。如果是这样,您可以测试元素的可见性或显示并在逻辑中使用它:
const isCNTYHidden = $(".toggleCNTY").css('visibility') === 'hidden' || $(".toggleCNTY").css('display') === 'none';
if (sh === '17' && isCNTYHidden) {
$(".toggleCNTY").toggle();
}