получить значение ближайшего поля выбора

0

Попытка получить значение ближайшего окна выбора, когда пользователь нажимает на ссылку рядом с ней.

Он возвращает undefined в консоли

http://jsfiddle.net/vkaCB/

<select name="songSelection_amclaughlin" class="songSelection_input">
    <option value="">SELECT ITEM</option>
    <option value="value 1">value 1</option>
    <option value="value 2">value 2</option>
    <option value="value 3">value 3</option>
</select> 

<span class="vote-btns">
    <a href="#" class="button fb grey">Vote</a>
    <a href="#" class="button tw grey">Vote</a>
</span>

//js

$(document).ready(function() {  
    $("a.button").click(function(event) {
        console.log($(this).closest('select').val());
    });
});
Теги:

3 ответа

3

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

$(this).closest('span').prev('select').val()

То, что вы, вероятно, хотите, - это найти ближайший промежуток, а затем предыдущий select

0

Выбор элементов на основе структуры DOM - очень хрупкая стратегия - любое изменение DOM приведет к сбою кода. У элемента управления есть имя, так почему бы не использовать его?

$('select[name=songSelection_amclaughlin]').val();

или без jQuery:

document.querySelector('select[name=songSelection_amclaughlin]').value;

При необходимости добавьте класс в селектор. Теперь структура DOM может быть любой, и выбор все равно будет найден.

0
  $(document).ready(function() {  
    $("a.button").click(function(event) {
     console.log($(this)
       .parents('.vote-btns')
       .prev('select')
       .find('option[selected]').attr('value'));
    });
});

или

  $(document).ready(function() {  
    $("a.button").click(function(event) {
     console.log($(this)
       .parents('.vote-btns')
       .prev('select')
       .value());
    });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню