使用组合器与$(this)

时间:2013-01-23 21:09:55

标签: javascript jquery jquery-selectors

如何选择$(this)兄弟的孩子。这些复杂的选择器并不是我的强项。我已经尝试使用组合器+来获得兄弟姐妹。但是将它与此相结合让我感到困惑。当我看到$(this后跟, something)

时,我不明白

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

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

谢谢!

4 个答案:

答案 0 :(得分:4)

您可以简单地使用以下内容:

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

或者

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

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

的直接子项,请使用后者

答案 1 :(得分:4)

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

构造$(this, selector)几乎肯定是错误的,但$(selector, this)$(this).find(selector)相同。

编辑请注意以下评论,指出.siblings(selector).parent().children(selector)基本相同。

答案 2 :(得分:1)

要将this用作context for the selector,您需要交换参数:$('+ input.in', this)。此外,您忘记使用*作为您要选择输入子项的兄弟:

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

(是的,这really works)。但是,使用jQuery方法导航DOM会更清楚:

$(this).next().find("input.in")

答案 3 :(得分:0)

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

但是,您在the right function to use处使用“兄弟姐妹”一词提示。找到所有兄弟姐妹后,您可以使用选择器来过滤该列表; jQuery允许您一次性完成所有操作,因此您的示例将是$(this).siblings('input.in')