Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как посчитать какой по счету блок с одинаковым классом (https://javascript.ru/forum/dom-window/47499-kak-poschitat-kakojj-po-schetu-blok-s-odinakovym-klassom.html)

imedia 26.05.2014 18:49

как посчитать какой по счету блок с одинаковым классом
 
как посчитать какой по счету блок среди блоков одинаковым классом на который нажали?
<div id="preview_main_block">
			<div class="preview" id="slider_slide1"></div>
			<div class="preview" id="slider_slide2"></div>
			<div class="preview" id="slider_slide3"></div>
</div>

рони 26.05.2014 18:55

imedia,
взять все блоки с данным классом и перебрать пока не встретится нужный

рони 26.05.2014 19:04

:-?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
</head>

<body>
<div id="preview_main_block">
			<div class="preview" id="slider_slide1">1</div>
			<div class="preview" id="slider_slide2">2</div>
			<div class="preview" id="slider_slide3">3</div>
</div>

<script>
	var elems = document.querySelectorAll(".preview");
	Array.prototype.forEach.call(elems, function(val, i)
	  {
	    val.onclick = function ()
	    {
	      alert(i+1);
	    }
	  }
	);
</script>
</body>

</html>

imedia 26.05.2014 20:12

а на jquery усть метод какой нибудь? и что такое index()?

рони 26.05.2014 20:37

Цитата:

Сообщение от imedia
а на jquery усть метод какой нибудь? и что такое index()?

да именно index()

http://javascript.ru/forum/dom-windo...tml#post312903

WorM32 27.05.2014 11:31

В данном случае вешать обработчик на каждый элемент это неправильный подход.

Нужно вешать единственный обработчик на родителя и смотреть на какого ребенка с нужным классом пришелся клик.

$(function () {
    var $parent = $('#preview_main_block');
    $parent.on('click', '.preview',  function () {
        alert($parent.find('.preview').index($(this)));
    });
});

http://jsfiddle.net/m7U4a/

Aetae 27.05.2014 11:41

В данном случае - взять из id.:)

рони 27.05.2014 11:48

:)
http://jsfiddle.net/m7U4a/1/

WorM32 27.05.2014 13:27

Цитата:

Сообщение от рони (Сообщение 313633)

Да, если список динамически не будет изменяться)


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