Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2013, 02:16
Новичок на форуме
Отправить личное сообщение для Pedro Garciya Lopez Посмотреть профиль Найти все сообщения от Pedro Garciya Lopez
 
Регистрация: 05.07.2013
Сообщений: 9

один обработчик для всех элементов определенного класса
Ребята, помогите!

Стоит задача сделать конструктор галерей. Работает это так:
1. на страницу загружаются изображения <img>
2. на каждом изображении можно курсором выделить квадратную область, которая в последствии станет превью.
3. после выделения всех областей жмешь ОК и едешь дальше

обработчик который все это проделывает с одним изображением я сделал, но изображений много, они будут подгружаться динамический, а он у меня пока подвязывается следующим образом:
var image = document.getElementById('image1');
image.onmousedown = function() {
//обработчик
}

можно ли как-то заставить его работать для всех <img> заданного класса?
<img class="imageCut" src="IMG_001.jpg" /><br />
<img class="imageCut" src="IMG_002.jpg" /><br />
<img class="imageCut" src="IMG_003.jpg" /><br />
.....

в идеале хочется сделать так как подвязываются некоторые WYSIWYG-редакторы: инициализируешь его в начале, а потом просто для всех <textarea> задаешь класс class="editor1" и они заменяются редактором.

Буду благодарен за советы, короткие примеры и вообще подскажите в какую сторону копать? И можно ли в этом случае обойтись без jQuery?
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2013, 02:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Pedro Garciya Lopez,
http://learn.javascript.ru/event-delegation
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2013, 20:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Pedro Garciya Lopez
в идеале хочется сделать так как подвязываются некоторые WYSIWYG-редакторы: инициализируешь его в начале, а потом просто для всех <textarea> задаешь класс class="editor1" и они заменяются редактором.
Такого не бывает. Если задать класс после инициализации редактора то никакого эффекта не будет. Ибо отслеживать изменения классов в js довольно накладно.


В вашем случае либо делегировать обработку события родительскому элементу, либо можно еще так (если элементов не тысячи):
var handler = function() {
//обработчик
};
var images = document.querySelectorAll('.imageCut');
for (var i = 0, image; image = images[i]; i++)
    image.onmousedown = handler;
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2013, 21:19
Новичок на форуме
Отправить личное сообщение для Pedro Garciya Lopez Посмотреть профиль Найти все сообщения от Pedro Garciya Lopez
 
Регистрация: 05.07.2013
Сообщений: 9

возможно вы меня не поняли, или скорее всего я не правильно объяснил.
вот так например инициализируется редактор Elrte:

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/smoothness/jquery-ui.css">
		<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
		<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script>
	

	    <link rel="stylesheet" type="text/css" href="tools/editor/css/elrte.min.css">
	    <script src="tools/editor/js/elrte.min.js"></script>
	    <script src="tools/editor/js/i18n/elrte.ru.js"></script>
	    
	    <script>
			$().ready(function() {
				$('.editor').elrte({
					cssClass : 'el-rte',
					lang     : 'ru',
					width    : 800,
					height   : 450,
					toolbar  : 'maxi'
				});
			});
		</script>


потом все <textarea> классом editor заменяются на Elrte
<textarea class="editor">


здесь правда jQuery
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2013, 21:36
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Pedro Garciya Lopez
они будут подгружаться динамический
там где они динамически подгружаются на каждую картинку cтавьте свой обработчик onmousedown
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2013, 21:46
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Pedro Garciya Lopez
вот так например инициализируется редактор Elrte
Тут навешивается обработчик события DOMContentLoaded, которое происходит в момент окончания загрузки HTML-документа, поэтому инициализация происходит после, а не до.
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2013, 22:39
Новичок на форуме
Отправить личное сообщение для Pedro Garciya Lopez Посмотреть профиль Найти все сообщения от Pedro Garciya Lopez
 
Регистрация: 05.07.2013
Сообщений: 9

воот, это как раз то что нужно в моем случае. спасибо за подсказку
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишу плагин. Не работает.live('click') для элементов. mr_freeman jQuery 4 20.12.2012 20:00
Функция для выборки html элементов potato Ваши сайты и скрипты 6 01.08.2012 01:55
Программный вызов событий для конкретных элементов iNfantry jQuery 9 31.01.2012 15:21
как записать id всех элементов в массив? SunYang Общие вопросы Javascript 21 06.02.2010 22:50
Событие change для всех элементов exvion jQuery 2 25.01.2010 18:18