Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以使用jquery children()选择子元素的子元素吗?_Javascript_Jquery_Jquery Selectors_Children - Fatal编程技术网

Javascript 我可以使用jquery children()选择子元素的子元素吗?

Javascript 我可以使用jquery children()选择子元素的子元素吗?,javascript,jquery,jquery-selectors,children,Javascript,Jquery,Jquery Selectors,Children,我正在尝试编写一个选择器,它必须同时包含ul、表和选择,并在单个选择器中选择li、tr和选项 例如,由于我无法排除在表单元格中定义列表的可能性,因此我尝试如下操作: // el can either be a list, table, select var items = el.children("li, option, tbody tr, tbody th"); 但我似乎无法通过选择来访问表行: var items = "table".children("tbody tr"); 问题: 有

我正在尝试编写一个选择器,它必须同时包含
ul
选择
,并在单个选择器中选择
li
tr
选项

例如,由于我无法排除在表单元格中定义列表的可能性,因此我尝试如下操作:

// 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()
方法并选择“children of a child”?如果没有,是否有更好的方法使用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");
到目前为止,它给了我正确的元素,所以当

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

因此,您只需要el的第一个后代,即TRs、LIs或我现在假设的选项。我不确定浏览器变体在桌面上的位置,所以我可能会谨慎使用:

$('> li, > option, > tr, > tbody > tr', el);

我猜你只想要直接的孩子,但是如果是一张桌子,你想要所有的
TR
。您可以使用直接子项选择器
find()
,这将只匹配
LI
选项
元素,这些元素是
el
的直接子项:

var items = el.find(' > li, > option, tbody tr, tbody th');
要避免嵌套TR,您甚至可以执行以下操作:

var items = el.find(' > li, > option, > tbody > tr, > tbody > th');
您应该签出筛选器()
el.filter(“tbody”)

您是说您希望能够深入到select、table或list中最深的lis、trs或选项,还是说只要上下文父元素是基本的三个el var元素之一,您就希望在任何级别找到它们?不。我不需要最深的。请参阅我的编辑。这将为我提供所有表格单元格:-)这是我所期望的。我以为您想要在表、列表和选择中找到的所有lis、选项和TR的子项。如果您想要lis选项和trs,只需丢失.children()。或者你是说只有当你知道选项和lis中有你想要的东西时才使用TDs吗?我有一个
ul
选择
,以及选择他们的
li
tr
选项
。问题是
tbody
vs
tr
是表的子项。我可以使用
find()。。。可以因此,第二个参数中的第一个仅匹配的子体。仅供参考,el本质上是find的缩写。我知道我可以
filter()。