如何使用 jQuery 计算动态添加的表行数?

发布于 2024-12-07 01:44:00 字数 821 浏览 0 评论 0原文

如何计算使用 jQuery 动态添加的表行数?

我尝试过使用 $('#mytbody').children().length; 但它不适用于动态添加的行。

这是我的代码,也可在 JsFiddle 中运行

<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.6.2.min.js">
<script>
$(function() {
    $('#add').bind('click', function() {
        $('#mytbody').after('<tr><td>'+ new Date() +'</td></tr>');
        var count = $('#mytbody').children().length;
        $('#counter').html(count);
    });
});
</script>
</head>
<body>
<button id="add">Add row</button>
<table>
    <tbody id="mytbody">
    </tbody>
</table>
Number of rows: <span id="counter"></span>
</body>
</html>

How can I count the table rows that is added dynamically with jQuery?

I have tried with $('#mytbody').children().length; but it doesn't work with rows that are added dynamically.

Here is my code, also runnable in JsFiddle

<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.6.2.min.js">
<script>
$(function() {
    $('#add').bind('click', function() {
        $('#mytbody').after('<tr><td>'+ new Date() +'</td></tr>');
        var count = $('#mytbody').children().length;
        $('#counter').html(count);
    });
});
</script>
</head>
<body>
<button id="add">Add row</button>
<table>
    <tbody id="mytbody">
    </tbody>
</table>
Number of rows: <span id="counter"></span>
</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

夜唯美灬不弃 2024-12-14 01:44:00

http://jsfiddle.net/H8sBr/2/

您需要使用 .append( ) 而不是 .after()。 After 在你的 tbody 之后添加一个元素,但你计算 tbody 内的元素。如果使用追加,则将它们添加到 tbody 的末尾。或者,您可以使用 .prepend() 在表格顶部添加条目。

PS:这是一个常见的误解,因为 css 选择器 .after() 在所选元素的内容之后添加内容,而不是在该元素之后。

http://jsfiddle.net/H8sBr/2/

you need to use .append() not .after(). After adds a element After your tbody but you count elements Inside your tbody. If you use append, you add them at the end of the tbody. Alternately you could use .prepend() to add entries on top of the table.

PS: This is a commun misconception because of the css selector .after() that adds content after the content of the selected element not after the element.

滥情空心 2024-12-14 01:44:00

您正在 tbody 之外添加行。

after 更改为 prepend

即可。

或者将 count 更改为 var count = $('table tr').length;

http://jsfiddle.net/H8sBr/442/

You are adding rows outside of tbody.

Change after to prepend

will work..

or change count to var count = $('table tr').length;

http://jsfiddle.net/H8sBr/442/

迷你仙 2024-12-14 01:44:00

尝试将计数更改为

var count = $('table tr').length;

这似乎有效 - 不知道为什么对 tbody 进行操作不起作用。

编辑: jsFiddle

Try altering count to

var count = $('table tr').length;

This seems to work - not sure why acting on the tbody doesn't.

Edit: jsFiddle

葬花如无物 2024-12-14 01:44:00

只需使用计数器,它的 dom 查找就会更少

$(function() {
    $('#counter').html(0);
    var count = 1;
    $('#add').bind('click', function() {
        $('#mytbody').after('<tr><td>'+ new Date() +'</td></tr>');
        $('#counter').html(count);
        count++
    });
});

Just use a counter,it has less dom lookups :

$(function() {
    $('#counter').html(0);
    var count = 1;
    $('#add').bind('click', function() {
        $('#mytbody').after('<tr><td>'+ new Date() +'</td></tr>');
        $('#counter').html(count);
        count++
    });
});
我也只是我 2024-12-14 01:44:00

看起来 jQuery 中存在一些错误(不确定);如果动态添加表行,则行长度不会更新。

var rowCount = $("#tableId > tbody > tr").length; 

如果动态添加行,将不会返回正确的计数。

简单的解决方案是使用:

var rowCount = document.getElementById("tableId").rows.length;

是的,您可以将 jQuery 与 javascript 结合使用。

It looks there is some bug (not sure) in jQuery; row length is not getting updated if you add table row dynamically.

var rowCount = $("#tableId > tbody > tr").length; 

will not return correct count if you add row dynamically.

Simple solution is to use:

var rowCount = document.getElementById("tableId").rows.length;

Yes, you can use jQuery with javascript.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文