使用jquery show / hide()时td colspan不起作用
我有一张目录
First Name Last Name Description John Deo More Description goes for 1st row Jaden Aidan More Description goes for 2nd row
当我点击“ 更多”时,将显示第一行描述。 它表现得很好但是colspan不起作用。
这是我的js代码
personalChecking = function () { $('a.personal-checking-more-link').click(function() { $(this).parent().parent().next().toggle('slow'); }); } $(document).ready(personalChecking);
提前致谢
这是’display:block’的问题
请参考以下链接http://thedesignspace.net/MT2archives/000376.html#.UUrg3FfCd1u
如果你隐藏tr,那么使用’display:table-row’代替’display:block’来显示tr,
如果你隐藏了td,那么使用’display:table-cell’而不是’display:block’来显示td
问题似乎是在显示元素时应用的样式。 它将样式设置为“display:block”,这似乎与colspan混乱。 以下是我提出的一些解决方法,但它们并不完美。
这个有生涩的动画:
personalChecking = function () { $('a.personal-checking-more-link').click(function() { $(this).parent().parent().next().toggle('slow', function() { if($(this).css('display') == 'block') { $(this).css('display', ''); } }); }); }
而且这个根本没有任何动静:
personalChecking = function () { $('a.personal-checking-more-link').click(function() { var nextRow = $(this).parent().parent().next(); if(nextRow.css('display') == 'none') { nextRow.css('display',''); } else { nextRow.css('display', 'none'); } }); }
在你的代码中尝试这个:
$('a.personal-checking-more-link').click(function() { var descriptionTR = $(this).parent().parent().next(); $(descriptionTR).toggle('slow').colSpan = 3; });
http://www.nabble.com/IE7:-Setting-ColSpan-as-Attribute-td21252688s27240.html
问题是你正在切换TR而不是其中的TD
$(this).parent().parent().next() 1 2 3 4
-
1是A
-
2是1所在的TD
-
3是2所在的TR
-
4是低于3的TR
但你的显示:没有在TD内。
所以我建议:
$("td",$(this).parent().parent().next()).toggle('slow');
内部$将获得包含TR的内容,然后将其用作“td”选择的上下文。
我发现firefox’问题’是因为a应该有display:table-row。 IE的故障似乎正确,因为它的故障被解释为标准行为。
所以最好的解决方案是使用addClass(“someClass”)和removeClass(“someClass”)来隐藏东西。 (使用CSS规则:someClass {display:none;})
这具有不动画的缺点。 我的解决方案可以处理。 如果没有,你可以以某种方式在css(’display’,’table-row’)中编写脚本。
-Clint
你没有动画尝试过吗? 即只是切换()
我遇到了同样的问题,似乎动画切换不会让COLSPAN的TD出现。 我将所有行内容显示在非COLSPAN的列中。 当我将其更改为普通切换()时,一切正常。
最好的方法是使用回调
personalChecking = function () { $('a.personal-checking-more-link').click(function() { $(this).parent().parent().next().show('slow', function() { $(this).attr("colspan", "3"); }); }); }
这样FireFox和Chrome就会知道如何准确地渲染td
对不起这是我的错。 样式标签应该放在TR而不是TD中
我有过jQuery的问题,并且在过去显示和隐藏/滑动表行,最后我必须让jQuery将选定的td包装在div中,然后显示/隐藏它,不是很好我知道但是在紧迫的截止日期它工作。
如果您对动画有类似的问题,请记住一些事项。