gpt4 book ai didi

javascript - 使用 jQuery 仅选择第一级后代 - 有更好的方法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:45 26 4
gpt4 key购买 nike

我正在尝试构建一个 jQuery 插件来锁定表格中的行或列,就像 Excel 的卡住 Pane 一样。 (对此有许多其他很好的解决方案,但由于各种原因,没有一个对我有用。我认为这可能与模式弹出窗口中的表格有关。但我离题了。)

作为其中的一部分,我尝试选择在插件选项中指定的特定表格的前 n 行或列。问题在于某些行包含其他嵌套表。不幸的是,我对此无能为力。所以我的问题是,如何只获得 <tr> 的第一级?在一张 table 内?使用 .children('tr')并不总是有效,因为该行不一定是表的直接子项——可能有一个 <thead> 或者(理想情况下)用户可能能够在包含元素上调用插件,并且它应该足够聪明以找到其中的表格
编辑: 实际上,现在我认为如果我们必须按 id 选择表,第二位将不起作用。但我认为要求人们只在 table 上使用该插件并不过分,因为这就是它的用途......

简而言之:如何只选择第一级表格行,这些行可能是也可能不是特定包含元素的直接子元素?

到目前为止,我根据 this answer 的下半部分得出的结论,是这样的:

$el.find('tr:not(tr tr):lt('+base.options.rows+')')

对于列:

$el.find('tr:not(tr tr)').find('(td,th):lt('+base.options.columns+')')

但这看起来又长又笨重,我想知道是否有更短/更简洁的方法来做到这一点。或者有没有办法只使用普通的旧 javascript?

编辑 2: Apparently the selector version is actually faster than .not() .给我的消息。

最佳答案

使用正确的选择器。在这种情况下,这将是 >,直接子选择器:

$el.find('#table > tbody tr > td, #table > tbody tr > th');

有关其他选项,请参阅“jQuery Selectors”。

或者,只需遍历 tbody 的所有直接子代:

var cells = $el.children('tbody').children('tr').children();

因为只有 tdtr 可以作为 tr 的子项,所以它应该已经是您想要的列表了。

关于javascript - 使用 jQuery 仅选择第一级后代 - 有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com