|
|
Да, просто замени весь шаблон на этот:
|

17.08.2011, 16:33
|
|
Новичок на форуме
|
|
Регистрация: 25.02.2010
Сообщений: 9
|
|
|
Узнать индекс расположения элемента в родителе
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
Помогите разобратся.
Зная на каком елементе li произошел клик,как узнать его индекс расположения в родителе.
|
|

17.08.2011, 17:19
|
 |
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
|
К примеру проходишь циклом по всем элементам, и каждый с кликнутым.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|

17.08.2011, 18:28
|
|
sinistral
|
|
Регистрация: 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>
|
|

17.08.2011, 22:44
|
|
Новичок на форуме
|
|
Регистрация: 25.02.2010
Сообщений: 9
|
|
|
Спасибо большое за пример!
|
|

18.08.2011, 01:27
|
 |
Матрос
|
|
Регистрация: 03.04.2008
Сообщений: 6,246
|
|
|
melky,
интересный хак.
Есть ли какие-то противопоказания, по поводу кроссбразуерности?
|
|

18.08.2011, 03:02
|
 |
Профессор
|
|
Регистрация: 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>
|
|

18.08.2011, 05:07
|
|
|
Регистрация: 09.07.2008
Сообщений: 3,873
|
|
|
Сообщение от Gvozd
|
|
Есть ли какие-то противопоказания, по поводу кроссбразуерности?
|
Хотел написать, что IE7 выдаст ошибку " Предполагается наличие объекта JScript", по аналогии с Array.prototype.slice.call(nodeList), но потом вспомнил, что в IE7,8 нет Array.prototype.indexOf 
|
|

18.08.2011, 08:29
|
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
к примеру в jQuery можно так:
$.fn.index.call(this.children, event.target);
|
|

18.08.2011, 10:37
|
|
Новичок на форуме
|
|
Регистрация: 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 не работает
|
|

18.08.2011, 12:52
|
|
Профессор
|
|
Регистрация: 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>
|
|
|
|