Как получить значение ближайшего ввода Jquery - PullRequest
7 голосов
/ 28 августа 2010

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

У меня есть:

    $(".deletepostbutton").click(function() {

            var deleteid = $(this).closest('.deleteid').attr('value');

  });


<div class="microblogpostactions">
     <input type="text"  name="deleteid" class="deleteid" value="'.$row['id'].'" />
     <a href="Javascript:void[0]" class="deletepostbutton">Delete</a>
     </div>

<div class="microblogpostactions">
     <input type="text"  name="deleteid" class="deleteid" value="'.$row['id'].'" />
     <a href="Javascript:void[0]" class="deletepostbutton">Delete</a>
     </div>

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

Ответы [ 3 ]

13 голосов
/ 28 августа 2010

Используйте .prev(), если вы уверены, что они находятся рядом друг с другом.(Это должно быть самым быстрым.)

 var deleteid = $(this).prev().attr('value');

Получает предыдущий элемент.

Если есть вероятность, что между ними будет еще один элемент, вы можете использовать .siblings():

 var deleteid = $(this).siblings('.deleteid').attr('value');

Это даст все братья и сестры внутри того же <div> с классом deleteid.

3 голосов
/ 28 августа 2010
$(this).parent().find('.deleteid').attr('value');
0 голосов
/ 21 сентября 2011
$(this).parent().find('.deleteid').attr('value');

Это может (и имеет) вызвать проблемы с производительностью. Например:

$(this).parent().find('.deleteid').val(10);
alert($(this).parent().find('.deleteid').val());

Иногда возвращает предыдущее значение .deleteid (не 10)

...