【发布时间】:2013-06-15 15:51:33
【问题描述】:
我正在尝试编写一个选择器,它必须同时覆盖 ul、table 和 select,并在单个选择器中选择 li、tr 和 options。
例如,由于我不能排除在表格单元格中定义的列表,因此我正在尝试这样:
// el can either be a list, table, select
var items = el.children("li, option, tbody tr, tbody th");
但看起来我无法通过选择来访问表格行:
var items = "table".children("tbody tr");
问题:
有没有办法使用children() 方法并选择“孩子的孩子”?如果没有,有没有更好的方法使用 jQuery?
谢谢!
编辑:
我正在寻找一种简短的方法来做到这一点:
if (el.get(0).tagName === "TABLE") {
items = el.find("tbody tr");
} else if ( el.get(0).tagName === "UL") {
items = el.children();
} else if ( el.get(0).tagName === "SELECT") {
items = el.children();
}
在单行中这样做会很好,但我需要有一种方法可以在我的children() 呼叫中访问tbody tr。
回答:
这是我的最终选择器:
items = el.find("> li, > option, tbody tr, tbody th, ui-controlgroup-controls ui-btn");
到目前为止,它给了我正确的元素,所以当el 是
table > returns: tr, tr, tr, tr
list > returns: li, li, li
select > returns: option, option, option
controlgroup > returns a.ui-btn, a.ui-btn, div.ui-btn
谢谢@adeneo!
【问题讨论】:
-
您是说希望能够深入到 select、table 或 list 中最深的 lis、trs 或选项,还是只想在任何级别找到它们,只要上下文父级是基本的三个 el var 元素之一?
-
不。我不需要最深的。查看我的编辑。
标签: javascript jquery jquery-selectors children