Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2010, 15:24
Интересующийся
Отправить личное сообщение для Kenshi25 Посмотреть профиль Найти все сообщения от Kenshi25
 
Регистрация: 23.09.2010
Сообщений: 15

Как получить порядковый номер?
Нужно получить порядковый номер элемента, по которому произведен клик, сделал так, но не работает, скажите в чем проблема и как правильно это сделать?

$("div").bind("click", function(){
	var a = $("div");
	for (var key in a) {
	    if( a.eq(key) == $(this) ) {
		alert (key);
	    }
	}
});
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2010, 15:37
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

$( "div" ).click(function ( event ) {
	$( "div" ).each(function ( i ) {
		if ( this == event.target ) alert( i );
	});
});
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2010, 15:50
Интересующийся
Отправить личное сообщение для Kenshi25 Посмотреть профиль Найти все сообщения от Kenshi25
 
Регистрация: 23.09.2010
Сообщений: 15

А можно по порядку как это работает?
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2010, 17:07
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

$( "div" ).click(function ( event ) { // Вешаем обработчик события
	$( "div" ).each(function ( i ) { // Цикл по всем DIV'-ам
		// Если данный DIV (this) равен элементу, по которому кликнули (event.target), то выводим алерт с номером
		if ( this == event.target ) alert( i );
	});
});
Ответить с цитированием
  #5 (permalink)  
Старый 24.09.2010, 18:52
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

$('div').click( function(e) {
	alert( $('div').index(e.target) );
} );
Ответить с цитированием
  #6 (permalink)  
Старый 26.09.2010, 21:08
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

jQuery настолько изощренный диалект, что позволю себе добавить еще несколько способов получить порядковый номер элемента

//1
$(function(){
    $('div').click(function(){
        alert($(this).html());
   });
});

//2
$(function(){
  $('div').each(function(i){
    $(this).click(function(){
      alert(i);
    })
  });
});

//3
$(function(){
  $('div').each(function(i){
    $(this).bind('click',function(){
      alert(i);
    });
  });
});

//4
$(function(){
  $('div').each(function(){
    $(this).bind('click',function(){
      alert($(this).index());
    });
  });
});


Будет интересно увидеть еще варианты
Ответить с цитированием
  #7 (permalink)  
Старый 27.09.2010, 13:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Вариант 1 -- бред.
Варианты 2-3 -- одно и тоже, + что будет, если дивов станет больше?
Вариант 4 -- тоже бред.
Ответить с цитированием
  #8 (permalink)  
Старый 27.09.2010, 14:06
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Чем бред?
В зависимости от ситуации, каждый их этих вариантов позволяет получить получить порядковый элемента, (если не брать первый псевдо-вариант).
Сам использую подход с event.target.



<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
	google.load("jquery", "1.4.2");
</script>

<script type="text/javascript">
//1
$(function(){
    $('div:eq(0) span').click(function(){
        alert($(this).html());
   });
});

//2
$(function(){
    $('div:eq(1) span').each(function(i){
    $(this).click(function(){
      alert(i);
    })
  });
});

//3
$(function(){
    $('div:eq(2) span').each(function(i){
    $(this).bind('click',function(){
      alert(i);
    });
  });
});

//4
$(function(){
    $('div:eq(3) span').each(function(){
    $(this).bind('click',function(){
      alert($(this).index());
    });
  });
});

</script>


<div>
	<span>0</span>
	<span>1</span>
</div>

<div>
	<span>0</span>
	<span>1</span>
</div>

<div>
	<span>0</span>
	<span>1</span>
</div>

<div>
	<span>0</span>
	<span>1</span>
</div>

Последний раз редактировалось monolithed, 27.09.2010 в 14:40.
Ответить с цитированием
  #9 (permalink)  
Старый 27.09.2010, 14:45
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Опять 25. Варианты 2-3 сбоят, если добавить еще спанов динамически. Вариант 4 сбоит тут:
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
    google.load("jquery", "1.4.2");
</script>
 
<script type="text/javascript">
//4
$(function(){
    $('div span').each(function(){
    $(this).bind('click',function(){
      alert($(this).index());
      return false;
    });
  });
});
 
</script>

<div>
    <span>0 <span>1</span></span>
    <span>2 <span>3</span></span>
</div>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 13:32
Как получить размер блока сразу после изменения его содержимого? Cooskon Events/DOM/Window 6 17.09.2010 15:15
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 22:32
Как получить все атрибуты ноды? Victor_85 Events/DOM/Window 1 12.04.2010 16:58
Как получить char код символа? softrix Общие вопросы Javascript 2 12.10.2009 13:54