Как обратиться к атрибутам двух братьев
Доброго времени!
Вот такая проблема. Есть скрипт: <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, время: 10:14. |