我有这段代码
$(this).parent().children('.vote_count').children('span.number')
但我想知道是否有更好的方法可以上升一个级别,从选择器下降两个
答案 0 :(得分:3)
怎么样
$("> .vote_count > span.number", $(this).parent())
或
$("> span.number", $(this).siblings(".vote_count"))
或
$("~ .vote_count > span.number", this)
或
$(this).find("~ .vote_count > span.number")`
答案 1 :(得分:2)
如何使用.siblings
?
$(this).siblings('.vote_count').children('span.number');
毕竟,我父母的孩子都是我的兄弟姐妹。
编辑,如果您需要确保this
也包括在内*那么您可以使用.andSelf()
:
$(this).siblings('.vote_count').andSelf().children('span.number');
经过与patrick的讨论(见评论),看起来最好的答案可能就是你已经拥有的那个:$(this).parent().children('.vote_count').children('span.number')
,除非你可以根据你的方式对this
做出假设选择它。
*第一个答案(不使用andSelf()
的答案)假定this
不是.vote_count
。
答案 2 :(得分:1)
你可以将它浓缩一些:
$(this).parent().find('> .vote_count > span.number')
这具有尽可能多地卸载到选择器引擎(而不是进行单独的函数调用)的优点,它可以可能进行优化。 (它不一定是,只是你让它成为可能。)与其他几个解决方案不同,它不会错过当前元素,如果它是.vote-count
,它会尊重你对即时的使用--child函数而不是后代函数,而且它很简单。不过,你的原版对我来说似乎也不错。
你原来只考虑直接的孩子,我认为这是故意的,但为了完整,我会提到:
如果您想在父级下的任何级别找到.vote-count
,并查找span.number
的直接子级,请执行以下操作:
// Slightly different from your original, see comment above
$(this).parent().find('.vote_count > span.number')
如果您只想查找立即子项的.vote-count
,但随后在其下方找到span.number
(即使不是直接孩子),请执行此操作:
// Slightly different from your original, see comment above
$(this).parent().find('> .vote_count span.number')
...最后如果你想在父母的任何地方找到任何.vote-count
(不仅仅是一个直接的孩子)并在其下找到任何span.number
(不仅仅是一个直接的孩子):< / p>
// Fairly different from your original, see comment above
$(this).parent().find('.vote_count span.number')
答案 3 :(得分:1)
就我个人而言,我认为您可以很好地坚持原始版本,但我可以通过使用原生.parent()
属性来更改它以消除.parentNode
调用。
$(this.parentNode).children('.vote_count').children('span.number')
答案 4 :(得分:0)
$(this).parent().find(".vote_count > span.number");
是另一种选择。
答案 5 :(得分:0)
我不太确定你是否正在寻找这个:
$(this).parent().find('.vote_count > span.number')