Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как узнать число цикла при "Click" у Jquery?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Сайга-12
Отправлено: 27 Февраля, 2014 - 14:28:54
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Нужно, чтобы при нажатии div внутри div'a с одинаковым id, было сообщение вроде: Клик сработал 1 раз, или 2 и т.д. При нажатии на div внутри div'a по-любому сработает 2 раза. Хорошо, было бы, чтобы срабатывало только один раз, но такое не получается.
Как у метода click узнать число текущего цикла?
Пытался так:
CODE (javascript):
скопировать код в буфер обмена
  1. $(".Elem").click(function(){
  2.  alert("Click сработал " + [i] + " раз. ");
  3. })[i];


Скрипт вообще перестаёт работать.
Что делать? Помогите.
 
 Top
IllusionMH
Отправлено: 27 Февраля, 2014 - 14:33:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Сайга-12, какого цикла? Какие одинаковые id? разметку в студию. и описание желаемого результата.
еще смотрите в сторону preventDefault, stopPropagation, stopImmediatePropagation

Посмотрите в консоль, там будут ошибки.

(Отредактировано автором: 27 Февраля, 2014 - 14:34:22)

 
 Top
DelphinPRO
Отправлено: 27 Февраля, 2014 - 14:34:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Сайга-12 пишет:
Хорошо, было бы, чтобы срабатывало только один раз,


CODE (javascript):
скопировать код в буфер обмена
  1. $(".Elem").one('click', function(){
  2.     alert("Click");
  3. });


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Сайга-12
Отправлено: 27 Февраля, 2014 - 14:35:08
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Пытался еще вот так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var i;
  3. i = i + i;
  4. $(".Elem").click(function(){
  5.  alert("Click сработал " + i + " раз. ");
  6. });
  7.  

Однако, переменная i ровна NaN;
 
 Top
IllusionMH
Отправлено: 27 Февраля, 2014 - 14:37:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Сайга-12, для начала нужно присвоить переменной число, да и наращивать стоит в обработчике клика, а не вне его.
 
 Top
Сайга-12
Отправлено: 27 Февраля, 2014 - 14:47:24
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




В общем, если создать два div'a, один внутри другого. То если нажать на родительский div, click сработает только один раз, но если начать на дочерний, сработает два раза. Это логично, ведь оба они с одним и тем же классом.
CODE (html):
скопировать код в буфер обмена
  1. <div class='Elem' style='width: 200px; height: 200px;' >
  2.         <div  class='Elem'  style='width: 100px; height: 100px;'></div>
  3. </div>

Кстати, извиняюсь за первый пост, там я упоминал про id, а в коде его нет. Загнался, id с классом спутал.
(Добавление)
Если присвоить число на примере:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. $(".Elem").click(function(){
  4.  var i = 0;
  5.  i = i + i;
  6.  alert("Click сработал " + i + " раз. ");
  7. });
  8.  

То результат будет таким: сработает 2 раза alert с одинаковым сообщением"Click сработал 1 раз."
 
 Top
IllusionMH
Отправлено: 27 Февраля, 2014 - 14:53:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Сайга-12, ну вы хоть чуть-чуть напрягайте извилиы, вы при каждом клике оперделяете локальную переменную с значением 0. объявление вынесите за обработчик.

Напишите что нужно получить в итоге, и тогда найдем нормальный вариант.
 
 Top
Сайга-12
Отправлено: 27 Февраля, 2014 - 14:56:40
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Желаемый результат: Чтобы не повторял цикл.
Нужно, чтобы только один раз была обработка.
Пытался даже так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(".Elem").click(function(){
  3.  var i = 0;
  4.  i = i + i;
  5.  alert("Click сработал " + i + " раз. ");
  6.  return;
  7. });
  8.  

Всё равно 2 раза код обрабатывается.
(Добавление)
Не то код скинул.
Вот:
CODE (javascript):
скопировать код в буфер обмена
  1. $(".Elem").click(function(){
  2.  alert("Click сработал!");
  3.  return;
  4. });

(Добавление)
Ура! Я нашёл.
event.stopPropagation ();
http://api[dot]jquery[dot]com/event[dot]stoppropagation/
(Добавление)
Хммм. Вот только этот способ с последствием. Тот элемент, на который сработала та функция, больше не активна.
 
 Top
IllusionMH
Отправлено: 27 Февраля, 2014 - 15:11:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Сайга-12, зачем вам вообще вложенные элементы с одним классом? Поменяйте класс и не парьтесь.
 
 Top
DelphinPRO
Отправлено: 27 Февраля, 2014 - 17:57:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




IllusionMH пишет:
Напишите что нужно получить в итоге

Кажется до меня доперло Улыбка Нужно остановить "всплывание" события по дому.

return false; в обработчике клика в помощь. Улыбка
ну или stopPropagation, который упомянул выше IllusionMH


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Viper
Отправлено: 28 Февраля, 2014 - 08:41:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Сайга-12 ну вы батенька и извращенец... Если вам нужно чтобы событие сработало 1 раз, то и используйте метод one(). А не математические вычисления количества попугаев после расстрела онных.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB