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
Вот прикрепляю файл...


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