我是Jquery的新手,对不起我的愚蠢问题。
这是我的HTML代码:
<tr role="row" class="odd">
<td><input type="checkbox" class="mycheckbox" value="2166"></td>
<td class="sorting_1">2166</td>
<td><span class="myparentid">743</span>
</td><td>0</td>
</tr>
我想从'mycheckbox'元素跳转到'myparentid'元素,忽略树结构。 在Jquery,我尝试过类似的东西:
var checkedRow = $(".mycheckbox");
var nextelem = checkedRow.next(".myparentid");
它不起作用,因为接下来只在兄弟姐妹中搜索......
你能给我一个提示吗?
谢谢!
答案 0 :(得分:4)
最简单的选择是前往公共父元素(在本例中为表格行),然后返回到您想要的那个:
$(".mycheckbox").closest("tr").find(".myparentid")
修改:添加一些其他信息:
$(".mycheckbox")
是起始位置,位于:tr&gt; td&gt; input.mycheckbox
(其中>
表示在html树的正下方)
.closest
向上移动树,直到找到匹配的父元素,因此.closest("tr")
会找到
<tr role="row" class="odd">
通过查看直接父“td”,然后它是直接父“tr”。
通常我会在这里使用一个类(<tr class="businessobjectcontainer">
)(取决于业务对象是什么),如果你改变它的这一部分它可以是div
或tr
稍后看到.odd
我认为这是为了造型而且会有一个.even
- 所以这不适合作为选择器。所以“tr”必须这样做。
.find()
与.closest
完全相反,然后在树上寻找匹配元素,在这种情况下,.myparentid
会找到:tr&gt; td&gt; span.myparentid
这就是你要找的东西。
.find()
可能不是最有效的,但它可能是最灵活的,因为它意味着您可以根据需要移动tr
的内容。
移动高效的替代方案可能是使用:
$(">td>span.myparentid", $(".mycheckbox").closest("tr"))
但主要是它只是改变语法。