Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Почему данное условие не верно (https://javascript.ru/forum/jquery/22351-pochemu-dannoe-uslovie-ne-verno.html)

Решатель 16.10.2011 15:40

Почему данное условие не верно
 
Здравствуйте. Научите меня пожалуйста как нужно обрабатывать условие на равенство? Вот допустим есть код:
$('.navig img').click(function(){
    for (var i = 0; i<$(this).size(); i++)
        if ( $(this)==$('.navig img:eq('+i.toString+')') )
        {
		alert('Клик по '+i.toString+'ому изображению');
	});

Но он не рабочий. Почему?
На страничке 4 картинки. Все они в блоке div с классом '.navig'.

Как такое условие обработать?

ksa 16.10.2011 16:13

Цитата:

Сообщение от Решатель
Но он не рабочий. Почему?

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

Потому как не всякая писанина вообще будет работать, а тем паче решать определеные задачи должным образом.

Например задачку по выводу сообщения "Клик по N-ому изображению" вообще лучше решать не так... :)

Цитата:

Сообщение от Решатель
Как такое условие обработать?

Вспомнилась памятка старого учителя по принципам работы с таблицами Брадиса...
Принципа всего 2.
1. Не лезьть туда, куда не нужно.
2. Не искать того, чего там нет.

Решатель 16.10.2011 16:24

Цитата:

Расскажи почему он должен быть рабочим?
Я просто до этого программировал только desktopные приложения... Мне трудно сейчас вникать в это все, но нужно.
1)Ну вот смотрите, сначала я так понимаю нужно селектором выбрать все нужные изображения:
$(.navig img) // Это есть

2)Далее повесить к этому массиву обработчик. Это тоже есть.
3)Далее перебираем все элементы этого массива и сравниваем тот элемент по которому был клик со всеми остальными.
if ( $(this)==$('.navig img:eq('+i.toString+')') )//Это есть

4)Далее производим действия с данным объектом. Это alert.
Что не так?

Цитата:

Например задачку по выводу сообщения "Клик по N-ому изображению" вообще лучше решать не так...
А как?:) Только пооптимальнее... Не хочу писать 4 обработчика для каждого изображения отдельно....

ksa 16.10.2011 16:27

Цитата:

Сообщение от Решатель
3)Далее перебираем все элементы этого массива и сравниваем тот элемент по которому был клик со всеми остальными.
if ( $(this)==$('.navig img:eq('+i.toString+')') )//Это есть

Вот это уже зачем?
Зачем всегда (!) при клике шариться в каком-то цикле?
Ведь уже сам обработчик уже можно задать с нужным параметром и никаких циклов потом не понадобится...

Цитата:

Сообщение от Решатель
Не хочу писать 4 обработчика для каждого изображения отдельно....

Один обработчик + параметр

Решатель 16.10.2011 16:28

Цитата:

Ведь уже сам обработчик уже можно задать с нужным параметром и никаких циклов потом не понадобится...
А как его задать?

ksa 16.10.2011 16:29

Цитата:

Сообщение от Решатель
А как?
...
А как его задать?

Для нормального ответа от тебя нужен полный тестовый пример...

Решатель 16.10.2011 16:34

А что, недостаточно данных, что есть 4 картинки внутри блока с классом .navig, и нужно повесить обработчик клика на каждую из них, и выводить алерт с номером картинки?

ksa 16.10.2011 16:36

Цитата:

Сообщение от Решатель
А что, недостаточно данных, что есть 4 картинки внутри блока с классом .navig

А напрячся и сделать работающий пример должен кто-то вместо тебя? :) Кому это больше нужно? Нам или тебе?

Решатель 16.10.2011 16:37

Щас, пару минут.

Решатель 16.10.2011 16:50

Вложений: 1
Вот прикрепляю файл...

ksa 16.10.2011 16:55

Решатель, не нужно ничего "крепить"... Пример размещай тут. Примеров, как это сделать, валом на этом форуме.

Даже в последних сообщениях, в том числе и моих...

Решатель 16.10.2011 16:57

html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Документ без названия</title>
<script src="Untitled-2.js" type="text/javascript"></script>
<script src="jquery.js" type="text/javascript"></script>
<link href="Untitled-3.css" type="text/css" rel="stylesheet" />
</head>

<body>
<div class="navig">
	<img src="check-on.png" width="35" height="35" alt="kartinka"/>
    <img src="check-on.png" width="35" height="35" alt="kartinka"/>
    <img src="check-on.png" width="35" height="35" alt="kartinka"/>
    <img src="check-on.png" width="35" height="35" alt="kartinka"/>
</div>

</body>
</html>

javascript:
$(document).ready(function(e) {
    $('.navig img').click(function(){
		//Что тут должно быть чтобы при клике по i-ой картинке выводился alert с ее номером? 
	});
});

ksa 16.10.2011 16:59

Решатель, если я скопирую твой пример... Соберу его в кучу... Он не сможет заработать у меня. :)

Но всетаки хоть что-то... :)

Решатель 16.10.2011 17:02

Ну так поможете?

ksa 16.10.2011 17:06

Как вариант...

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<style type="text/css">
</style>
<script type='text/javascript'>
$(document).ready(function() {
	$('.navig img').each(function(i) {
		$(this).click(function() {
			alert('Клик по '+(i+1)+'-ому изображению');
		});
	});
});
</script>
</head>
<body>
<div class="navig">
	<img src="http://javascript.ru/forum/images/smilies/smile.gif" width="35" height="35" alt="kartinka"/>
    <img src="http://javascript.ru/forum/images/smilies/smile.gif" width="35" height="35" alt="kartinka"/>
    <img src="http://javascript.ru/forum/images/smilies/smile.gif" width="35" height="35" alt="kartinka"/>
    <img src="http://javascript.ru/forum/images/smilies/smile.gif" width="35" height="35" alt="kartinka"/>
</div>
</body>
</html>


Т.ч. начинай учиться делать нормальные тестовые примеры... ;)

Решатель 16.10.2011 17:09

Аке:)
Спасибо большое!

walik 17.10.2011 17:26

$(document).ready(function() {
    $('.navig img').click(function() {
      alert('Клик по '+($(this).index()+1)+'-ому изображению');
    });
});

Markuper 19.10.2011 13:36

Цитата:

Сообщение от walik (Сообщение 131580)
$(document).ready(function() {
    $('.navig img').click(function() {
      alert('Клик по '+($(this).index()+1)+'-ому изображению');
    });
});

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


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