Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   какой по счёту li (https://javascript.ru/forum/jquery/13025-kakojj-po-schjotu-li.html)

vanderv 13.11.2010 06:23

какой по счёту li
 
Когда обращаюсь к элементу делаю так:
$("body").find("ul#list li").eq(n);
А вот как узнать какой n при $("body").find("ul#list li.now")
ТОбеж мне надо узнать какой элемент(номер) имеет класс now.

exec 13.11.2010 06:29

var object = $("body").find("ul#list li")[n];
$("body").find("ul#list li.now").each(function (i) {
	if (this == object)
		alert(i);
});

vanderv 13.11.2010 06:39

заранее не известно под каким n находится класс now

monolithed 13.11.2010 08:07

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>

<script type="text/javascript">
$(function(){
    $('li[class="now"]').each(function(i){
        $(this).click(function(){
            alert(i);
        });
    });
});
</script>

micscr 13.11.2010 08:33

var $now = $("body").find("ul#list li.now");
var $all = $("body").find("ul#list li");
alert($all.index($now));

- сам принцип

vanderv 13.11.2010 21:41

<ul>
<li></li>
<li></li>
<li></li>
</ul>
Вот три li. При обращении к ним $("body").find("ul#list li").eq(n), n может быть равно 0, 1, 2.
А мне надо знать какой из этих li имеет класс now. Его номер, дабы потом к нему можно обратиться. Понимаете? Вы мне дали функции которое вообще ищут общее количество li c классом now.

abc_ua 13.11.2010 22:21

var c = 0;
$("body").find("ul#list li").each(function () {
	if (this.className == "now")
		alert(c);
	c++;
});

monolithed 14.11.2010 00:09

Цитата:

Сообщение от vanderv
Понимаете? Вы мне дали функции которое вообще ищут общее количество li c классом now.

Не пишите бред, я вам привел код, который при клике на элемент с классом "now" показывает его порядковый номер.

vanderv 14.11.2010 01:13

Цитата:

Сообщение от monolithed (Сообщение 79108)
Не пишите бред, я вам привел код, который при клике на элемент с классом "now" показывает его порядковый номер.

Уверены? запустите свой скрипт и нажмите.
<ul>
<li>li</li>
<li class="now">now</li>
</ul>
вот тут он выводит 0, а должен 1.

monolithed 14.11.2010 01:24

Цитата:

Сообщение от vanderv
вот тут он выводит 0, а должен 1.

Не должен.
Порядковый номер элемента соответствует его индексу, а значение первого индекса по-умолчанию - 0.

В следующий раз конкретней формулируйте задачу!
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>

<script type="text/javascript">
$(function(){
    $('li[class="now"]').each(function(i){
        $(this).click(function(){
            *!*
            alert(++i);
            */!*
        });
    });
});
</script>

vanderv 14.11.2010 01:46

Цитата:

Сообщение от monolithed (Сообщение 79128)
Не должен.
Порядковый номер элемента соответствует его индексу, а значение первого индекса по-умолчанию - 0.

В следующий раз конкретней формулируйте задачу!
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>

<script type="text/javascript">
$(function(){
    $('li[class="now"]').each(function(i){
        $(this).click(function(){
            *!*
            alert(++i);
            */!*
        });
    });
});
</script>

Это тоже не то. Я уже запутался, давайте попробуем занаво.

Есть некий список
<ul>
<li></li>
<li></li>
<li></li>
......
<li></li>
</ul>

Возьмём на примере вашу функцию. Так вот, если у нас будет так:
<ul>
<li></li>
<li class="now"></li>
<li></li>
......
<li></li>
</ul>

То при нажатии alert должен быть 1, если так:
<ul>
<li></li>
<li></li>
<li class="now"></li>
......
<li></li>
</ul>

то 2... и тд. Ваша же функция делает общий поиск... По крайне мере первый вариант. 2-ой я пока не могу понять что дает. Что значит общий? Это если у на с будет вот так:
<ul>
 <li></li>
 <li class="now"></li>
 <li></li>
</ul>
<ul>
 <li></li>
 <li class="now"></li>
 <li></li>
</ul>
<ul>
 <li></li>
 <li class="now"></li>
 <li></li>
</ul>

то при нажатии на первый ul li[class=now] alert выдаст 0, на второй нажимаешь выдает 1 и последний выдаст 2... А мне надо что бы во всех трёх случаях ваша функция выдавала 1. Тепепь понимаете что мне нужно?

monolithed 14.11.2010 01:57

Цитата:

Сообщение от vanderv
А мне надо что бы во всех трёх случаях ваша функция выдавала 1


<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>

<script type="text/javascript">
$(function(){
    $('li[class="now"]').each(function(){
        $(this).click(function(){
            alert(1);
        });
    });
});
</script>

vanderv 14.11.2010 03:04

Цитата:

Сообщение от monolithed (Сообщение 79137)
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>

<script type="text/javascript">
$(function(){
    $('li[class="now"]').each(function(){
        $(this).click(function(){
            alert(1);
        });
    });
});
</script>

Вы издеваетесь? Читайте внимательнее что требуется.

рони 14.11.2010 03:57

vanderv,
<ul>
    <li >li</li>
    <li class="now">now</li>
    <li class="now">now</li>
    <li >li</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<script  type="text/javascript">
for (var u = document.getElementsByTagName("ul"), i = 0; i < u.length; i++) {
    l = u[i].getElementsByTagName("li");
    for (var k = 0; k < l.length; k++)
    if (l[k].className == "now") l[k].onclick = function (a) {
        return function () {
            alert(a)
        }
    }(k)
};
</script>

micscr 14.11.2010 11:26

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
 
<ul>
    <li>li0</li>
    <li>li1</li>
    <li class="now">now2</li>
</ul>
<hr>
<ul>
    <li>li0</li>
    <li>li1</li>
    <li>li2</li>
    <li class="now">now3</li>
</ul>
 
<script type="text/javascript">
$(function(){
  $('ul').click(function(){
         var $this = $(this);
	 var $lis = $this.find('li');
	 var $li1 = $this.find('li.now');
	 var ind = $lis.index($li1);
         alert(ind);
  });
});
</script>

рони 14.11.2010 21:26

ещё вариант ))) порядковый номер элемента с заданным классом относительно родителя
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<ul>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li>li</li>
    <li class="now">now</li>
    <li>li</li>
    <li class="now">now</li>
</ul>
<ul>
    <li class="now">now</li>
    <li>li</li>
    <li class="now">now</li>
    <li>li</li>
    <li class="now">now</li>
</ul>
<script type="text/javascript">
$(function () {
    $("li.now").click(function () {
            alert($(this).index())
        })
    })
</script>


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