Есть такой код Код (Text): <div> <span>один</span> <span>два</span> <span>три</span> </div> на самом деле теги span это кнопки, по клику на них должно происходить что то. Мне надо узнать на какой конкретно по счету span было нажатие, что бы было более понятно, немного кода: Код (Text): // при нажатии на тот или иной span происходит примерно следующий var A = this.parentNode.getElementsByTagName('span'); // получили массив со всеми span который находит в блоке div // мне надо узнать какой по счету span был нажат, A[0] или A[1] или A[2], причем интересует именно цифра PS меня интересует, может есть какой то свойство или метод, который возвращает эту цифру (позицию в массиве) все же есть зацепка в виде this, если нет, то я сам код распишу для поиска (мысли как это сделать есть).
Код (PHP): A.indexOf(yourElement); // вернет индекс элемента в массиве или -1, если элемент не найден Ну а вообще, я бы сделал немного иначе... Я бы забиндил на каждый элемент отдельное событие. Добавлено спустя 9 минут 21 секунду: А может и нет...
Объясню суть есть два блока, первый кнопки, второй текст, по нажатию на кнопку соответствующий блок должен допустим под светиться (изменить цвет фона), блоки симметричны, т.е. если нажат span идущий второй, значит и блок с текстом должен под светиться второй. Кнопки: Код (Text): <div> <span>один</span> <span>два</span> <span>три</span> </div> тексты: Код (Text): <div> <div>текст один</div> <div>текст два</div> <div>текст три</div> </div> вот мне и надо вычислять индексы самым кротчайшим способом.
Ты можешь написать так. Код (Text): <span to="div_1">span 1</span> <span to="div_2">span 2</span> <span to="div_3">span 3</span> Берешь аттрибут to. И ищешь среди: Код (Text): <div class="div_1">div 1</div> <div class="div_2">div 2</div> <div class="div_3">div 3</div> Или что-то в этом роде. Итого, получается один обработчик на все клики. Ну или как ты задумал...
Нынче это не модно. Нынче модно юзать нативный механизм: http://htmlbook.ru/samouchitel-html5/atributy-data Если ты хочешь привязать какие-то действия к спанам, то наверное это действия над чем-то, связанные с чем-то. Так вот это что-то как-то идентифицируется же. И как раз этот идентификатор и надо вписать в дата-атрибут. Тогда тебе будет всё равно на каком именно кликнули, и ты будешь из атрибута получать то, что нужно для действия. Пример: Код (Text): <span data-message="7">Кликни</span> Код (Text): <div id="message-7">...</div> Соотв вешаешь онклик, в котором $('#message-' + $(this).data('message')).hide();
Если на CSS3: Код (Text): <!DOCTYPE HTML> <html> <head> <style> input[name=bgcolor]{ display: none; } input[name=bgcolor]:checked + *{ color: red; } </style> </head> <body> <div> <label for="r1">один</label> <label for="r2">два</label> <label for="r3">три</label> </div> <div> <input id="r1" type="radio" name="bgcolor"/> <div>текст один</div> <input id="r2" type="radio" name="bgcolor"/> <div>текст два</div> <input id="r3" type="radio" name="bgcolor"/> <div>текст три</div> </div> </body> </html> и js не нужен
суть вопроса вроде решено, не? )) Если же: то: Код (Text): <head> <script type="text/javascript"> function getIndexMenu(tar){ var elems = tar.parentNode.children; for(var i = 0; i < elems.length; i++){ if(elems[i] == tar) break; } return i; } document.onclick = function(e){ e = e || window.event; var tar = e.target || e.srcElement; if(tar.tagName == 'LI' && tar.parentNode.getAttribute('id') == 'menu') alert(getIndexMenu(tar)); } </script> </head> <body> <ul id="menu"> <li>один</li> <li>два</li> <li>три</li> </ul> </body>