JQuery在td中选择一个元素

Roc*_*och 11 jquery css-selectors

我想在我的一个表的td中选择一个元素,但我真的不懂语法.这是我试过的:

$("table > td:#box")
Run Code Online (Sandbox Code Playgroud)

这是我的表结构的示例:

<div id="main">
<div id="today">
    <table id="list" width="100%" cellpadding="4" cellspacing="0" border="0" style="font-size: 10px; border-collapse:collapse;">
    <tr id="109008">
    <td class="tdstd">
    <a class="box" href="link"></a>
    </td>
Run Code Online (Sandbox Code Playgroud)

或者使用Chrome的DOM检查器:

替代文字

San*_*man 17

好吧,"#box"表示一个ID为"box"的DOM对象,因为它是一个唯一的ID.您可以直接选择那个.但是你的代码建议你有几个带有id"box"的元素,你必须改变它们.您应该在TD内部为您的元素分配一个类,或者如果它是唯一的DIV或SPAN在框中,您可以像这样访问它:

$("table td .box")
Run Code Online (Sandbox Code Playgroud)

请注意,">"选择器意味着TD必须是TABLE的直接子节点,并且我假设您之间至少有一个TR级别,因此这也不起作用.我上面的示例将所有TD中的每个元素与任何TABLE的子项中的"box"类匹配.

显然我也会在桌子上设置一个类,并使用这样的东西:

$("table.boxes td .box")
Run Code Online (Sandbox Code Playgroud)

这样你就不会意外地选择你想要工作的范围之外的东西.


你现在已经添加了HTML,所以我正在编辑我的答案:

$("table#list a.box")
Run Code Online (Sandbox Code Playgroud)

  • +1,但他已经在桌面上有一个id,无论如何效率要高得多 - $('#list td a.box')是这里的"正确"解决方案 (2认同)

Bja*_*ðar 9

最有效的选择器是:

$('#list').find('a.box');
Run Code Online (Sandbox Code Playgroud)

要么:

$('a.box', $('#list')[0]);
Run Code Online (Sandbox Code Playgroud)

通过id首先选择表,您已将范围设置为仅表,然后您可以在该表中搜索所需的元素.

第二个选择器是相同的,您正在选择一些东西,并且您将范围作为第二个参数.

阅读第一篇文章会更容易.