在表行上使用 jQuery 切换功能使表本身增长
我使用与 1 个表行的 click() 事件挂钩的 jQuery 切换效果来切换下一行(也恰好是表中的最后一行)的可见性。 如果我连续多次单击触发行,则每次显示切换行时,包含两行的表都会增长一点。
这是我正在使用的 jQuery:
$(document).ready(function() {
$(".sectionhead").click( function() {
$(this).next("tr").toggle("150");
});
});
因此,经过几次迭代后,该表(其中只有 tr.sectionhead 行可见)相当大。
是否有一种内置方法可以避免这种行为,或者是否有某种方法可以在 jQuery 中执行此操作,这比我正在做的更容易?
编辑
下面 ScottE 的答案建议的我的实际解决方案(我不想对我正在切换的 tr 进行分类,并且它一开始就可见):
$(document).ready(function() {
$(".sectionhead").toggle(
function() {
$(this).next("tr").hide();
},
function() {
$(this).next("tr").show();
}
)
});
I'm using the jQuery toggle effect hooked to the click() event of 1 table row to toggle the visibility of the next row (which also happens to be the final row in the table). If I click the firing row multiple times in succession, the table that contains the 2 rows grows a little every time the toggling row shows.
Here's the jQuery I'm using:
$(document).ready(function() {
$(".sectionhead").click( function() {
$(this).next("tr").toggle("150");
});
});
So after a few iterations, the table (which has only the tr.sectionhead row visible in it) is quite large.
Is there a built-in way that I can avoid this behaviour, or is there some way of doing this in jQuery that would be easier than what I'm doing?
Edit
My actual solution suggested by ScottE's answer below (I don't want to have to class the tr I'm toggling, and it will be visible to start with):
$(document).ready(function() {
$(".sectionhead").toggle(
function() {
$(this).next("tr").hide();
},
function() {
$(this).next("tr").show();
}
)
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不同浏览器之间的 TR 切换存在一些奇怪的情况。 如果您在 FF 的表格中放置 border="1",您将看到切换如何工作(或不工作),就像您当前编码的那样。
如果你使用切换键(fn,fn),它似乎可以在 FF 和 IE7 中工作。 IE8 可能是一个不同的故事 - 所以也检查一下。 jQuery .toggle() 无法在 IE 中使用 TR 显示如果是这种情况,请修复。
以下假设 tfoot tr { display: none; } 存在于您的 CSS 中。
There is some weirdness among different browsers with toggling TRs. If you place a border="1" in the table in FF you'll see how the toggling works (or doesn't) as you have it currently coded.
If you go with a toggle(fn, fn) it seems to work in FF and IE7. IE8 could be a different story - so check it as well. jQuery .toggle() not working with TRs in IE shows a fix if that's the case.
The following assumes that tfoot tr { display: none; } is present in your CSS.
我认为您不想使用toggle(),因为toggle 将使用show() 方法并将元素显示设置为“阻止”。 在这种情况下,我认为您想要一些更自定义的内容,将 tr 显示设置为“table-row”。
I don't think you want to use toggle() as toggle will use the show() method and set the element display to 'block'. In this case, I think you want to have something a little more custom which will set the tr display to 'table-row'.