Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JQuery и click (https://javascript.ru/forum/jquery/1296-jquery-i-click.html)

Gvozd 24.12.2008 18:17

Да.я
и я приношу извинения
Кстати кажется тот код, что янаписал правильно должен писатся как-то так
$('.tr1').click(
function() {
    $('.tr1').each(
    function(i,n){
    $(n).меняем_стиль()
    });
});

stanlee 25.12.2008 11:42

хм такой код меняет стразу во всех строках стили
а как только у одной строки?

Gvozd 25.12.2008 11:50

заменить
$('.tr1').each(
    function(i,n){
    $(n).меняем_стиль()

на
$("элемент_который_меняем").меняем_стиль()

stanlee 25.12.2008 12:15

дык у меня не один блок строк
те
<tr class='tr1'>
<td rowspan=2></td>
<td></td>
</tr>
<tr class='tr1'>
<td></td>
</tr>
....
<tr class='tr1'>
<td rowspan=2></td>
<td></td>
</tr>
<tr class='tr1'>
<td></td>
</tr>
....
<tr class='tr1'>
<td rowspan=2></td>
<td></td>
</tr>
<tr class='tr1'>
<td></td>
</tr>



"элемент_который_меняем" это на 1 блок сработает

а если таблица длинная то чета я в тупик засел (

Gvozd 25.12.2008 15:26

Блин, у меня ломается мозг от вашего описания задачи.
Вам надо так?
если пользователь щелкнул на первую или вторую строчку, то первая И вторая подсвечиваются
есди клдикнул на третью или четвертую, то третья И четвертая подсвечивается.

Если я правильно опичсал что вам надо, то мое первое исправленное решение вам должно подойти.
ТОЛЬКО
только вам надо для каждой такой группы чтрок свой класс сделать
ПО примеру
tr1 tr2 tr3 tr4
И для каждого такого блока вызвать то, что я писал
Если я вас неправильно понял, опишите в похожем формате, что вам надо

Octane 25.12.2008 15:58

Как-то так
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
table {
border-spacing: 0;
border-collapse: collapse;
}
table, td, th {
border: 1px solid #ccc;
}
tr.selected {
background: #ffc;
}
</style>
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript">
$(function() {
	var rows = $('table').click(function(e) {
		var node = $(e.target);
		if(node.is('td')) {
			rows.removeClass('selected');
			node = node.parent().addClass('selected');
			if(node.children().attr('rowspan') == 2) node.next().addClass('selected');
			else if(node.prev().children().attr('rowspan') == 2) node.prev().addClass('selected');
		}
	}).find('tbody tr');
});
</script>
</head>
<body>
	<table>
		<thead>
			<tr>
				<th>Заголовок 1</th>
				<th>Заголовок 2</th>
				<th>Заголовок 3</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td rowspan="2">Ячейка</td>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td rowspan="2">Ячейка</td>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td>Ячейка</td>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td rowspan="2">Ячейка</td>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td>Ячейка</td>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
			<tr>
				<td>Ячейка</td>
				<td>Ячейка</td>
				<td>Ячейка</td>
			</tr>
		</tbody>
	</table>
</body>
</html>


работает только для rowspan == 2

stanlee 26.12.2008 12:17

спасибо большое )

но я заметил одну весч
этот метод не универсален а зависит от rowspan
буду пробовать сделать универсальнее

alexandre 24.11.2009 01:38

У меня тоже вопрос по теме мне нужно при щелчке по нужной ячейке вставить в нее инпут а в него то значение что было в этой ячейке.
Просто со вставкой в нужную ячейку инпута все вроде просто а вот с вставкой в инпут нужного значения или даже просто с правильным получением значения проблемы:
$('table td').click(function(){ 
			var str = $(this).text();			
			$("#value input").val('str');					
			$(this).append('<input name="date" type="text">').val('str');            		 
            		});

в ячейку рядом с значением вставляет просто инпут а если поэкспереметировать то получает тока название переменной str но в инпут который в ячейке и его не вставляет вставляет в другой какой нибудь инпут за пределами таблички.

mcpro 25.11.2009 12:15

дык.. а нельзя ли просто использовать toggleClass
http://docs.jquery.com/Attributes/toggleClass#class
вроде гораздо проще будет )

alexandre 26.11.2009 01:28

А как можно внести значение ячейки в инпут с помощью toggleClass насколько я понимаю это чтото типа addClass? Я примеров с toggleClass похожих на то что мне нужно не нашол.


Часовой пояс GMT +3, время: 20:32.