带有嵌套表的 jQuery,使用传递的选择器选择外部表 tr/td

标签 jquery html

我正在尝试设置嵌套表函数。所以在函数中我传递了一个选定的元素,我只想选择该表的子/直接后代 td/tr 而不是嵌套表的 td/tr 元素。这是我设置的一个小例子。

<table class="top">
    <tr>
        <td>1</td>
        <td>2</td>
    </tr>
    <tr>
        <td>3</td>
        <td>4</td>
    </tr>
    <tr>
        <td>5</td>
        <td>
            <table class="nested">
                <tr>
                    <td>1</td>
                    <td>2</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>4</td>
                </tr>
                <tr>
                    <td>5</td>
                    <td>4</td>
                </tr>
            </table>
        </td>
    </tr>
</table>

<div id="results"></div>

和与之配套的 jQuery/Javascript...

var tbl = $(".top");
var r = $("div#results");

$(r).html("");

$(r).append("var tbl = $(\".top\")</br>")

$(r).append("$(tbl).find(\"td\").length:" + $(tbl).find("td").length.toString() + "</br>");

$(r).append("$(\"td\", tbl).length: " + $("td", tbl).length.toString() + "</br>");

$(r).append("$(tbl).children(\"tbody\").children(\"tr\").children(\"td\").length: " + $(tbl).children("tbody").children("tr").children("td").length.toString() + "</br>");

结果如下……

var tbl = $(".top") (模拟传递的选择器)

$(tbl).find("td").length:12 (选择所有 td 元素)

$("td", tbl).length: 12 (选择所有td元素,同上)

$(tbl).children("tbody").children("tr").children("td").length: 6 (选择合适的元素,但是jQuery链似乎太长太严格为了我想做的事)

非常感谢为顶级表格的子元素找到合适的选择器的任何帮助!谢谢!

更新:这里是 jsFiddle .

最佳答案

使用直接后代 (>) 选择器的工作 fiddle :http://jsfiddle.net/3T9sN/

$(function(){
    var rows = $(".top > TBODY > TR");
    alert( "Number of rows: " + rows.length );

    var cells = $(".top > TBODY > TR > TD");
    alert( "Number of cells : " + cells.length );
});​

当然,你可以在这里复用一些context,让查询更加高效,比如:

var tbody = $(".top > tbody");

// using children() method
var rows = tbody.children( "TR" );

// using selector context
var cells = $( "> TR > TD", tbody );

alert( "Number of rows: " + rows.length );
alert( "Number of cells : " + cells.length );

fiddle :http://jsfiddle.net/3T9sN/1/

关于带有嵌套表的 jQuery,使用传递的选择器选择外部表 tr/td,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11729211/

相关文章:

javascript - 将数组动态加载到 jQuery 函数中

javascript - 如何单击标题中的链接然后返回 HTML、Javascript 和 CSS?

javascript - 收集输入数据并在 div 中显示

html - HTML 脚本标记中允许使用哪些语言类型?

jquery - 没有显示大图 (prev() click()attr())

jquery - 如何在函数内使用 jQuery 去除 html

javascript不会从数组生成

javascript - 输入之间的 BR 标签不会换行

javascript - 删除滚动条但不删除滚动功能

JavaScript 用 HTML 替换文本不起作用?