2

我有一些看起来像这样的 HTML(注意:我知道这段代码不是很好,但我最初并没有设计它,其中一些是自动生成的):

<table id="tab1">
    <tbody>
    <tr id="row1">
        <td><span>Some text</span></td>
        <td><span>more text</span></td>
        <td><input type="text" id="inp1" onclick="DoSomething(this);" /></td>
    </tr>
    <tr id="row2">
        <td><span>Some text</span></td>
        <td><span>more text</span></td>
        <td><table id="tab2"><tbody>
            <tr><td><input type="radio" id="inp2" onclick="DoSomething(this);" /><span>item</span></td></tr>
        </tbody></table></td>
    </tr>
    </tbody>
</table>

所有这些都嵌入在表格中,该表格也嵌入在表格中,依此类推。在DoSomething(this)函数中,我想检索 table 下面的 TR tab1。我无法确定为此所需的 jquery。目前我正在做这样的事情:

function DoSomething(control) {
    var parentTab = '<%=tab1.ClientID %>';
    var tr = $('#' + parentTab + ' > tbody > tr').has('#' + $(control).attr('id')).get(0);
}

这看起来真的很乱但有效。有没有更清洁的方法来做到这一点?如果有帮助,表内的输入将始终是单选按钮,单选按钮永远不会出现在子表之外。理想情况下,我想这样做而不必知道 idtab1但这似乎是不可能的。

4

1 回答 1

3

.has()还接受 DOM 元素作为参数,因此您可以简化为:

var tr = $('#' + parentTab + ' > tbody > tr').has(control)[0];
于 2012-10-23T16:51:35.307 回答