2014-02-14 6 views
0

Возможно, я слишком много смотрел на это, но почему id тега select не предупрежден ... ??Почему ближайший объект возврата тега возвращает вместо

здесь код, который я играл с:

<select id="one"> 
    <option>an option</option> 
    <option>another option</option> 
</select> 

<button id="btn" >look a button</button> 

$("#btn").click(function() { 
    var c = $(this).closest(".one").id; 
    alert(c); 
}); 

что является HMTL и Javascript ... должно быть легким ...

+0

это идентификатор - просто сделать '$ («# один»)' –

+0

Я пытаюсь тоже узнать другие функции ... ничего не достичь, кроме от изучения других функций, спасибо. – user2405469

ответ

2

closest() используется для получения первого элемента предка который соответствует вашему селектору. Вам нужно prev() или siblings() здесь:

var c = $(this).prev().attr('id'); 

или:

var c = $(this).siblings("#one").attr('id'); 

поскольку select является предыдущий элемент или родственный вашей кнопки в этом случае

+0

@ user2405469 Рад, что это помогло! Счастливый помощник по кодированию :) – Felix

+1

этот комментарий - лучшая вещь, которую я читал весь день, спасибо! будет принимать это через две минуты ... – user2405469

3

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

Но те, метод обхода JQuery возвращает объект JQuery, который не имеет в id свойство так прочитать значение атрибута ID с помощью .attr()

$("#btn").click(function() { 
    var c = $(this).prev("#one").attr('id');//as @Felix pointed out one is the id not a class 
    //since you have an id for the select element you can use an id selector 
    // like c = $('#one').val(); 
    alert(c); 
}); 
+1

Это должно быть '# one' не' .one' или просто 'prev()' – Felix

+0

@Felix пропустил, что в этом случае, зачем использовать метод обхода .... просто используйте id селектор и забудьте его –

2

Поскольку все JQuery селекторы возвращают объекты JQuery, на какие дополнительные методы JQuery может быть прикован. Если вы хотите получить доступ к сырьевому элементу, вы можете использовать [0]:

$("#btn").click(function() { 
    var c = $(this).closest(".one")[0].id; 
    alert(c); 
});