Получить порядок divs в div

У меня есть список DIV - это контейнер DIV , аналогичный приведенному ниже.

  <div id="ChainLinkList">
  <div class="chainSelect" id="L2176">jj</div>
  <div class="chainSelect" id="L2171">suby 3</div>
  <div class="chainSelect" id="L2170">suby 2</div>
  <div class="chainSelect" id="L2167">submenu</div>
  </div>

Я бы хотел получить порядок определенного DIV при нажатии. Я попробовал следующее

   $(".chainSelect").live("click", function() {
   var index = $(this).parent().index(".chainSelect");
   alert(index);
   .....

также

   $(".chainSelect").live("click", function() {
   var index = $('#ChainLinkList').parent().index(".chainSelect");
   alert(index);
   .....

Но я просто, кажется, получаю -1

1
добавлено
Просмотры: 1

5 ответы

Вы можете просто вызвать $ (this) .index (); , чтобы получить индекс щелкнутого элемента внутри его родителя:

$(".chainSelect").live("click", function() {
   var index = $(this).index();
   alert(index);
});​

http://jsfiddle.net/5ShLs/

6
добавлено

Вы должны изменить

$(".chainSelect").live("click", function() {
   var index = $(this).parent().index(".chainSelect");
   alert(index);
});

для:

$(".chainSelect").live("click", function() {
   var index = $(".chainSelect").index(this);
   alert(index);
});​

скрипка

1
добавлено

вы можете попробовать это:

.live is deprecated so it is better to use .on() handler

 $(document).on("click", ".chainSelect", function(){
   var index = $(this).index();
   alert(index);
 });
1
добавлено
Хорошо! но не понял, почему e.target не является хорошим советом? стремятся узнать больше.
добавлено автор Jai, источник
спасибо jan Dvorak ответ обновлен. будет помнить об этом. еще раз спасибо.
добавлено автор Jai, источник
+1 для заметок live ; -1 как e.target не является хорошим советом, хотя, поскольку он имеет другое значение. (всего: 0 от меня)
добавлено автор John Dvorak, источник
e.target может возвращать дочерний элемент предполагаемого элемента; этот ребенок имеет совсем другое положение в его родительском, чем this . e.target не связан с связанным элементом или с делегированным элементом.
добавлено автор John Dvorak, источник
Рейтинг обновлен: +1 от меня, 0 от анонимного downvoter.
добавлено автор John Dvorak, источник

не нужно переходить к родительскому .. просто получите индекс вашего элемента clicked ..

Начиная с jQuery 1.7, метод .live() устарел.

$(".chainSelect").on("click", function() {
  var index = $(this).index();
  alert(index);
});​
0
добавлено

в первую очередь..

    $('#ChainLinkList').parent() 

в этом вы вызываете родительский элемент div chainlinklist, который здесь сам является родительским элементом divmnt div, который вам нужен .. поэтому это не будет для вас.
поэтому попробуйте это ..

    $(this).index(); 
0
добавлено