Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2014, 02:10
Аспирант
Отправить личное сообщение для ninzzo Посмотреть профиль Найти все сообщения от ninzzo
 
Регистрация: 21.05.2013
Сообщений: 42

Один обработчик для всех
Привет!

Обычно пишу:

<script type="text/javascript">
jQuery(document).ready(function() {


		$("#various1").fancybox({
				'width'				: '75%',
		});

		$("#various2").fancybox({
				'width'				: '75%',
	        });

               $("#various3").fancybox({
				'width'				: '75%',
	        });

                и так для каждого ID. ИХ 200 например...

                  $("#various200").fancybox({
				'width'				: '75%',
	        });

 });
</script>


Вручную я 200 обработчиков не пишу. просто через цикл PHP вывожу от 1-200.

нижу идет:
<a id="various1" href="#" >Действие</a>
<a id="various2" href="#" >Действие</a>
<a id="various3" href="#" >Действие</a>
<a id="various4" href="#" >Действие</a>
<a id="various5" href="#" >Действие</a>
<a id="various6" href="#" >Действие</a>
<a id="various7" href="#" >Действие</a>
...
<a id="various200" href="#" >Действие</a>



Вопрос:

можно как то вместо всех обработчиков написать только ОДИН ?
и использовать там что то типа THIS ????

ID заменить на CLASS не проблема. Просто надоело уже загромождать.


На примере:
я из базы вывожу список товаров. И около каждого товара есть кнопка что вызовет модальное окно. Вот я хочу написать один обработчик и что бы все они вызывали это окно только со своими данными. Как то так.


Спасибо за ответы!
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2014, 08:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от ninzzo
можно как то вместо всех обработчиков написать только ОДИН ?
Дай всем элементам некий класс... Далее работай с этим классом.
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2014, 12:22
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Vanilla
<div id="test">
      <a id="various1" href="#">Действие</a>
      <a id="various2" href="#">Действие</a>
      <a id="various3" href="#">Действие</a>
      <a id="various4" href="#">Действие</a>
      <a id="various5" href="#">Действие</a>
      <a id="various6" href="#">Действие</a>
      <a id="various7" href="#">Действие</a>...
      <a id="various200" href="#">Действие</a>
      <a  href="#">Действия нет</a>
    </div>
    <script>
      test.onclick = function (e) {
        e = e || window.event;
        target = e.target || e.srcElement;
        if (!(target.tagName == "A" && target.id.slice(0, 7) == "various")) return;
        alert(target.id);
      }
    </script>

jQuery
<div id="test">
      <a id="various1" href="#">Действие</a>
      <a id="various2" href="#">Действие</a>
      <a id="various3" href="#">Действие</a>
      <a id="various4" href="#">Действие</a>
      <a id="various5" href="#">Действие</a>
      <a id="various6" href="#">Действие</a>
      <a id="various7" href="#">Действие</a>...
      <a id="various200" href="#">Действие</a>
      <a href="#">Действия нет</a>
    </div>
    <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
    <script>
      jQuery(function ($) {
        $('#test').on('click', 'a[id^=various]', function () {
          alert(this.id);
        });
      });
    </script>

Последний раз редактировалось Vlasenko Fedor, 30.01.2014 в 17:08.
Ответить с цитированием
  #4 (permalink)  
Старый 02.02.2014, 00:26
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от ninzzo
И около каждого товара есть кнопка что вызовет модальное окно
Кнопка "Купить", не иначе.

Так не бывает. "Товар" в вашей терминологии имеет структуру и в ней та самая кнопочка. Ссылку все равно генерить надо, тег, а развесить на определенный массив тегов функции легче простого по имени. Потому что массивы имен обычно и передаются на сервер массивами.
Ответить с цитированием
  #5 (permalink)  
Старый 02.02.2014, 00:27
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Или по типу ноды или что самоочевидно по id родительского контейнера.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одна функция для всех тегов по одному событию antsivash Общие вопросы Javascript 1 22.10.2012 00:18
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Пошаговый вывод скрипта для IE всех версий. Zidky Элементы интерфейса 10 17.06.2009 18:27
Как присвоить текст строке состояния для всех браузеров? Tend Общие вопросы Javascript 4 14.05.2009 16:38
обработчик собития onMouseOver для фрейма Rian Events/DOM/Window 7 06.06.2008 19:48