Как я могу выбрать ребенка от родного брата $(this). Подобные сложные селекторы на самом деле не мои сильные стороны. Я пытался выяснить это с помощью комбинатора +. но сочетание этого с этим меня смущает. Я не понимаю, когда вижу $(this, за которым следует , something)

$(this, '+ input.in') бесполезен, поскольку кажется, что он выбирает только то же самое, что и $(this);

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

Благодарность!

1
1252748 24 Янв 2013 в 01:09

4 ответа

Лучший ответ

Если у вас есть this для беспокойства, вы больше не работаете только с селекторами. Вы должны использовать API jQuery, чтобы указать, где искать больше / разных элементов. Поиск братьев и сестер может быть выполнен с помощью .next(), .previous() или .parent().children(selector), в зависимости от ситуации.

Конструкция $(this, selector) почти наверняка является ошибкой, но $(selector, this) такой же, как $(this).find(selector).

edit обратите внимание на комментарий ниже, указывающий, что .siblings(selector) в основном совпадает с .parent().children(selector).

4
Pointy 23 Янв 2013 в 21:53

Чтобы использовать this в качестве контекста для селектора, вам необходимо поменять местами параметры: $('+ input.in', this). Кроме того, вы забыли использовать * для родного брата, для которого вы хотите выбрать входные дочерние элементы:

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

(Да, это действительно работает). Однако использование методов jQuery для навигации по DOM было бы более понятным:

$(this).next().find("input.in")
1
Bergi 23 Янв 2013 в 21:24

Вы можете просто использовать что-то вроде:

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

Или же

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

Используйте последний, если целевой селектор не является прямым потомком input.in

4
Mike Brant 23 Янв 2013 в 21:12

Селекторы CSS в jQuery используются либо для фильтрации набора элементов (например, .filter(), .not()), либо для поиска элементов-потомков (например, $ ('. Foo') для поиска по всему документу, $ (' foo ', data) для поиска другого объекта, например ответа AJAX, или someElement.find ('. foo ') для поиска содержимого элемента). В вашем случае у вас есть один элемент, и он не содержит целевой элемент, поэтому независимо от того, какой селектор вы используете, ни один из них не сможет его увидеть.

Однако использование вами слова «брат и сестра» намекает на подходящую функцию. Как только вы найдете всех братьев и сестер, вы можете использовать селектор для фильтрации этого списка; jQuery позволяет вам сделать все это за один раз, поэтому ваш пример будет $(this).siblings('input.in')

0
IMSoP 23 Янв 2013 в 21:32