2015-07-30 2 views
0

Я пытаюсь создать кнопку, которая позволит включить самое близкое (выше) поле ввода.jQuery ближайший ничего не возвращает/не находит отключенного ввода

HTML:

<input class="form-control" name="name" type="text" disabled/> 
<span class="input-group-btn"> 
    <button class="btn btn-default btn-input-activate" type="button">Change</button> 
</span> 

JavaScript:

$('.btn-input-activate').click(function() { 
     var value = $(this).closest('input:disabled').val(); 
     alert("value is: " + value); 
    }); 
} 

Я не понимаю, почему это не работает (Уведомления показывает "значение является не определено"). Я хотел использовать closest(), чтобы избежать использования нескольких методов parent() на $(this).

Благодаря

+2

Почему бы не использовать один 'parent' как так' вар значение = $ (это) .parent(). prev(). val(); ' – depperm

+0

Использование ближайшего():' $ (this) .closest (': has (input: disabled)'). find ('input: disabled'). val(); 'но совершенно уверен, вы ** не хотите, чтобы ** использовать ближайший ... –

ответ

4

Вы искажая, что closest() делает. Он ищет дерево DOM для предков.

Ваш вход не является предком кнопки. Это родной брат родителя

данной кнопки Попробуйте

$(this).closest('span').siblings('input:disabled').val(); 

ИЛИ

$(this).parent().siblings('input:disabled').val(); 

Ссылка: closest() api docs

Смежные вопросы