Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Подскажите способ узнать порядковый номер элемента в родителе (https://javascript.ru/forum/jquery/21462-podskazhite-sposob-uznat-poryadkovyjj-nomer-ehlementa-v-roditele.html)

DjDiablo 10.09.2011 02:33

Подскажите способ узнать порядковый номер элемента в родителе
 
Нужно написать функцию узнающую порядковый номер элемента в контейнере. К примеру элемента "c", то есть функция должна вернуть 3

.
<div id="container">
      <div id="a"> </div>
      <div id="b"> </div>
      <div id="c"> </div>
      <div id="d"> </div>
<div id="/container">


в голову приходит пока только такое решение.

//target это элемент, номер которого мы должны узнать. Причём не id и не класс а именно элемент выбранныый где то 
//предварительно  при помощи метода $("")
function getNum(target){
  var ret=0;
  target.parent().each(function(){
       ret+=1;
       if (this==target) break;
  });
  return ret;
}


Надо полагать работать будет.
Может всёже, можно определить номер как нибудь без циклов ?? Сделать это как-то умнее.

ваый 10.09.2011 10:37

function getNum(el) {
    var i = 0;
    while (el = el.previousSibling) {
        el.nodeType == 1 && i++;
    }
    return i;
}
Как-то так, думаю, покатит. Здесь el - DOM элемент, поэтому если с jquery то как-то так getNum($collection[0]). Или переписать под jquery, использую .prev(), то же самое, просто работать будет чуть-чуть медленнее.

melky 10.09.2011 10:50

$("#c").index()

пример :
<div id="container">
      <div id="a"> </div>
      <div id="b"> </div>
      <div id="c"> </div>
      <div id="d"> </div>
</div>
<script src="http://yandex.st/jquery/1.6.3/jquery.min.js"></script>
<script>
alert($("#c").index())
</script>

DjDiablo 10.09.2011 11:21

<div id="hello">
 7687
</div>

<div id="container">
      <div id="a"><div>тест </div> </div>
      <div id="b"><div>тест </div> </div>
      <div id="c"> </div>
      <div id="d"> </div>
</div>
<script src="http://yandex.st/jquery/1.6.3/jquery.min.js"></script>
<script>
alert($("#c").index())
</script>

Да ! Походу это то что нужно.
СПС, плюсую.


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