Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.05.2011, 19:52
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

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

Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 04.05.2011, 20:02
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

<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>
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 04.05.2011, 20:47
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

Спасибо! Но алерт - это я так, для примера. А надо сохранить в две пеерменные, чтобы потом показать их в другом месте.
МОжно так?
Ответить с цитированием
  #4 (permalink)  
Старый 04.05.2011, 21:13
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Ну да сохраняйте в переменные и показывайте их.
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);
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 04.05.2011 в 21:20.
Ответить с цитированием
  #5 (permalink)  
Старый 05.05.2011, 11:03
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

Спасибо! Про 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);
    });


Ничего не работает..
Ответить с цитированием
  #6 (permalink)  
Старый 05.05.2011, 11:12
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

Все, поменял местами 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(){
         .....
    });

Ведь вторая проще с виду.
Ответить с цитированием
  #7 (permalink)  
Старый 05.05.2011, 17:56
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

Чтобы не открывать новую тему, напишу тут следующий вопрос.

яваскрипт:
$('#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" генерируется строка таблицы с кнопкой. При нажатии на кнопку, содержимое строки копируется в другой див.
Так вот если добавить две и больше строк, то при нажатии на кнопку первой строки, содержимое скопируется столько раз, сколько добавлено строк. Как от этого избавиться - никак не понимаю.
Ответить с цитированием
  #8 (permalink)  
Старый 05.05.2011, 18:30
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от shaltay
а чем правильнее делать такую конструкцию
Первой конструкцией вы вешаете событие когда документ уже загружен, а при втором до загрузки (вроде не должно работать).
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #9 (permalink)  
Старый 05.05.2011, 18:35
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от shaltay Посмотреть сообщение
При нажатии на кнопку 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>');
Ответить с цитированием
  #10 (permalink)  
Старый 06.05.2011, 12:45
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

Сообщение от melky Посмотреть сообщение
ну так копируйте,а не добавляйте
Так мне-то и надо чтобы добавлялось. ЧТобы при каждом нажатии появлялась новая строка, с которой потом можно будет работать. Но чтобы добавлялась только один раз, а не несколько при одном нажатии.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
как обратиться к childNode по его id в div-е, через id родителя kichSman Events/DOM/Window 5 28.10.2009 02:16
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
iframe, как правильно обратиться? Geddar Opera, Safari и др. 22 28.05.2009 16:47