1

如何选择$(this). 这些复杂的选择器并不是我真正的强项。我已经尝试使用组合器来获得它的兄弟姐妹+。但是把它和这个结合起来让我很困惑。$(this当我看到 a后跟 a时,我不明白, something)

$(this, '+ input.in')$(this)没用,因为它似乎只选择与;相同的东西

http://jsbin.com/oguhuv/2/

谢谢!

4

4 回答 4

4

您可以简单地使用类似的东西:

$(this).next('input.in').children(selector)

或者

$(this).next('input.in').find(selector)

如果目标选择器不是input.in

于 2013-01-23T21:12:27.050 回答
4

一旦你this担心了,你就不再真的只使用选择器了。您必须使用 jQuery API 告诉它在哪里寻找更多/不同的元素。根据具体情况,可以通过 、 或 查找兄弟.next()姐妹.previous().parent().children(selector)

该构造$(this, selector)几乎可以肯定是一个错误,但$(selector, this)$(this).find(selector).

编辑注意下面的评论指出这.siblings(selector).parent().children(selector).

于 2013-01-23T21:12:47.053 回答
1

this用作选择器的上下文,您需要交换参数:$('+ input.in', this). 此外,您忘记将 a*用于要选择输入子代的兄弟姐妹:

$('+ * input.in', this);

(是的,这确实有效)。但是,使用 jQuery 方法来导航 DOM 会更清晰:

$(this).next().find("input.in")
于 2013-01-23T21:15:58.253 回答
0

jQuery 中的 CSS 选择器用于过滤一组元素(例如.filter(), .not())或查找后代元素(例如 $('.foo') 来搜索整个文档,$('foo', data) 来搜索另一个对象,比如 AJAX 响应,或者 someElement.find('.foo') 来搜索元素的内容)。在您的情况下,您有一个元素,并且它不包含目标元素,因此无论您使用什么选择器,这些都无法看到它。

但是,您对“兄弟”一词的使用暗示了要使用的正确功能。找到所有兄弟姐妹后,您可以使用选择器过滤该列表;jQuery 让您一次性完成所有操作,因此您的示例将是$(this).siblings('input.in')

于 2013-01-23T21:32:10.750 回答