Как обратиться к атрибутам двух братьев
Доброго времени!
Вот такая проблема. Есть скрипт: <div> <input type="text" value="" class="elem2" /> <input type="text" value="" class="prname" /><input type="button" value="go" class="but_go" /> </div> И jquery: $('.but_go').click(function(){ var param = $(this).siblings().attr('value'); alert (param); }); Надо чтобы при нажатии на кнопку, он считывал value обоих input'ов (кроме себя) и помещал их в разные переменные. Как это сделать, помогите плиз! Заранее спасибо! |
<html> <head> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script type="text/javascript" language="javascript"> $(function() { $('.but_go').click(function(){ $(this).siblings().each(function() { alert($(this).val()); }); }); }); </script> </head> <body> <div> <input type="text" value="" class="elem2" /> <input type="text" value="" class="prname" /> <input type="button" value="go" class="but_go" /> </div> </body> </html> |
Спасибо! Но алерт - это я так, для примера. А надо сохранить в две пеерменные, чтобы потом показать их в другом месте.
МОжно так? |
Ну да сохраняйте в переменные и показывайте их.
var values = []; $(function() { $('.but_go').click(function(){ $(this).siblings().each(function(index) { values[index] = $(this).val(); }); }); }); alert(values[0]); alert(values[1]); Или если вы заранее знаете что будут именно 2 элемента, то: $(function() { $('.but_go').click(function(){ var firstValue = $(this).siblings().eq(0); var secondValue= $(this).siblings().eq(1); }); }); alert(firstValue); alert(secondValue); |
Спасибо! Про eq() никогда не слышал. Классная функция!
Но мне нужно узнать атрибуты сиблингов. Пишу так: $('.but_go').click(function(){ var firstValue = $(this).siblings().attr('value').eq(0); var secondValue= $(this).siblings().attr('value').eq(1); alert(firstValue); alert(secondValue); }); Ничего не работает.. |
Все, поменял местами attr и eq и все стало так как надо!
$('.but_go').click(function(){ var firstValue = $(this).siblings().eq(0).attr('value'); var secondValue= $(this).siblings().eq(1).attr('value'); alert(firstValue); alert(secondValue); }); спасибо большое! walik, подскажите, а чем правильнее делать такую конструкцию: $(function() { $('.but_go').click(function(){ .... }); }); чем такую?: $('.but_go').click(function(){ ..... }); Ведь вторая проще с виду. |
Чтобы не открывать новую тему, напишу тут следующий вопрос.
яваскрипт: $('#add_input').click(function(){ $('#table').append('<tr><td><input type="text" value="" class="elem2" /> <input type="text" value="" class=prname /><input type="button" value="go" class="but_go" /></td></tr>'); $('.but_go').click(function(){ var name = $(this).siblings().eq(0).attr('value'); var a = Number($(this).siblings().eq(1).attr('value')); $('#itog').append('<div class="work">'+name+' <span class=timetime>'+a+'</span></div>'); }); }); и хтмл: <table id="table"> </table> <input type="button" value="еще" id="add_input" /><br /> При нажатии на кнопку id="add_input" генерируется строка таблицы с кнопкой. При нажатии на кнопку, содержимое строки копируется в другой див. Так вот если добавить две и больше строк, то при нажатии на кнопку первой строки, содержимое скопируется столько раз, сколько добавлено строк. Как от этого избавиться - никак не понимаю. |
Цитата:
|
Цитата:
$('#itog').append('<div class="work">'+name+' <span class=timetime>'+a+'</span></div>'); append добавляет в конец делайте так $('#itog').*!*html*/!*('<div class="work">'+name+' <span class=timetime>'+a+'</span></div>'); |
Цитата:
|
Часовой пояс GMT +3, время: 20:32. |