我正在尝试编写一个必须涵盖ul
,table
和select
的选择器,并选择li
,tr
和{{1在一个选择器中。
因为我不能排除在表格单元格中定义的列表,所以我尝试这样:
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");
方法并选择“孩子的孩子”?如果没有,是否有更好的方法使用jQuery?
谢谢!
修改:
我正在寻找一个简短的方法:
children()
很高兴在单行中执行此操作,但我需要在我的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();
}
电话中访问tbody tr
。
答案:
这是我的最终选择:
children()
到目前为止,给了我正确的元素,所以当items = el.find("> li, > option, tbody tr, tbody th, ui-controlgroup-controls ui-btn");
是
el
谢谢@adeneo!
答案 0 :(得分:1)
所以你只想要el的第一个后代来自el,我现在假设的TRs,LIs或OPTIONs。我不确定浏览器变体在桌面上的位置是什么,所以我可能会安全地使用它:
$('> li, > option, > tr, > tbody > tr', el);
答案 1 :(得分:1)
我猜你只想要直接的孩子,但如果是桌子,你需要所有的TR
。您可以使用直接子项选择器>
和find()
,它们仅匹配LI
的直接子项OPTION
和el
元素:
var items = el.find(' > li, > option, tbody tr, tbody th');
为了避免嵌套TR,您甚至可以这样做:
var items = el.find(' > li, > option, > tbody > tr, > tbody > th');
答案 2 :(得分:0)
你应该结帐过滤器() el.filter( “TBODY”)