Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.08.2011, 17:33
Новичок на форуме
Отправить личное сообщение для root-andrey Посмотреть профиль Найти все сообщения от root-andrey
 
Регистрация: 25.02.2010
Сообщений: 9

Узнать индекс расположения элемента в родителе
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>

Помогите разобратся.
Зная на каком елементе li произошел клик,как узнать его индекс расположения в родителе.
Ответить с цитированием
  #2 (permalink)  
Старый 17.08.2011, 18:19
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

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

на пример

выводит позицию(индекс) кликнутого li в списке ul.. не забываем, что нумерация в программировании начинается с нуля

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>

<script>
document.getElementsByTagName("ul")[0].onclick = function(e){
    alert( [].indexOf.call(this.children, (e ? e.target : event.srcElement) ) );
};
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 17.08.2011, 23:44
Новичок на форуме
Отправить личное сообщение для root-andrey Посмотреть профиль Найти все сообщения от root-andrey
 
Регистрация: 25.02.2010
Сообщений: 9

Спасибо большое за пример!
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2011, 02:27
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

melky,
интересный хак.
Есть ли какие-то противопоказания, по поводу кроссбразуерности?
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2011, 04:02
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

ложечка дёгтя :
<ul>
<li>1</li>
<li><span>2</span></li>
<li>3</li>
<li>4</li>
</ul>

<script>
document.getElementsByTagName("ul")[0].onclick = function(e){
    alert( [].indexOf.call(this.children, (e ? e.target : event.srcElement) ) );
};
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 18.08.2011, 06:07
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Gvozd
Есть ли какие-то противопоказания, по поводу кроссбразуерности?
Хотел написать, что IE7 выдаст ошибку "Предполагается наличие объекта JScript", по аналогии с Array.prototype.slice.call(nodeList), но потом вспомнил, что в IE7,8 нет Array.prototype.indexOf
Ответить с цитированием
  #8 (permalink)  
Старый 18.08.2011, 09:29
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

к примеру в jQuery можно так:
$.fn.index.call(this.children, event.target);
Ответить с цитированием
  #9 (permalink)  
Старый 18.08.2011, 11:37
Новичок на форуме
Отправить личное сообщение для root-andrey Посмотреть профиль Найти все сообщения от root-andrey
 
Регистрация: 25.02.2010
Сообщений: 9

Сообщение от melky Посмотреть сообщение
на пример

выводит позицию(индекс) кликнутого li в списке ul.. не забываем, что нумерация в программировании начинается с нуля

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>

<script>
document.getElementsByTagName("ul")[0].onclick = function(e){
    alert( [].indexOf.call(this.children, (e ? e.target : event.srcElement) ) );
};
</script>
в IE не работает
Ответить с цитированием
  #10 (permalink)  
Старый 18.08.2011, 13:52
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<ul>
		<li>1</li>
		<li>2</li>
		<li><i><b>3</b></i></li>
		<li>4</li>
	</ul>
	<script>
		document.getElementsByTagName("ul")[0].onclick = function( e ) {
			var target = e ? e.target : event.srcElement;
			while ( target != this && target.nodeName.toLowerCase() != "li"  ) {
				target = target.parentNode;
			}
			if ( target == this ) { return; }
			var index = 0;
			while ( (target = target.previousSibling) ) {
				if ( target.nodeType === 1 ) {
					index++;
				}
			}
			alert ( index )
		};
	</script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать индекс элемента над которым находится курсор Zhazhah jQuery 2 28.03.2011 23:30
узнать индекс перемен массива из значения bushstas Общие вопросы Javascript 3 14.12.2010 01:23
Узнать CSS правило для элемента vinet Events/DOM/Window 4 10.12.2010 08:12
Как узнать id элемента? Вальдемар Общие вопросы Javascript 1 25.09.2009 13:31
как узнать индекс? oxx Элементы интерфейса 4 14.11.2008 14:00