У меня есть структуры, которые выглядят так:
<div class="wanted" id="but-not-really">
<div class="wanted">
<div class="dad">
<input class="reference"/>
<input class="wanted"/>
<input class="bro3"/>
</div>
</div>
</div>
И я хочу получить ширину либо предка (div.wanted
), либо родственного элемента (input.wanted
) моего элемента .reference
(который равен $(this)
в моем цикле JS), в зависимости от того, что ближе всего.
Если бы я хотел искать только по предкам, я бы использовал $(this).closest('.wanted').width()
. Если бы я хотел искать только среди братьев и сестер, я бы использовал $(this).siblings('.wanted').width()
.
Я пытался использовать $(this).parents().find('.wanted').width()
, но веб-страница содержит другие элементы документа, которые мешают. Вот почему я ищу ближайший элемент .wanted
среди братьев и сестер и предков.
РЕШЕНИЕ № 1 (спасибо @undefined):
Сначала проверьте братьев и сестер, используя метод
siblings
, если коллекция пуста, используйтеclosest
.
var width = $(this).siblings('.wanted').length === 0
? $(this).closest('.wanted').css('width')
: $(this).siblings('.wanted').css('width');
siblings
, если коллекция пуста, используйтеclosest
. - person undefined   schedule 16.09.2014this
в вашем цикле? Покажи свой код. - person Satpal   schedule 16.09.2014$(this)
- это элемент.reference
. Мой код немного сложен и не имеет отношения к этому вопросу. - person Seeven   schedule 16.09.2014var width = input.siblings(selector).length === 0 ? input.closest(selector).css('width') : input.siblings(selector).css('width');
- person Seeven   schedule 16.09.2014nearest
? К сожалению, у jQuery нет такого метода. - person undefined   schedule 16.09.2014