Задать вопрос
@siroper

Как обработать клик внутри функции только один раз?

Здравствуйте. Имеется достаточно не хорошая jQuery конструкция (изменять которую не вариант (сразу говорю.)).

Имеется функция, которая может вызываться несколько раз, все блоки грузятся по ajax.

// Сама функция
function getMapBlock() {
	...
	...
	
	if(block == "yandex_map") {
		...
		...
		
		ymaps.ready(function () {
			
			// Клик на кнопку, которая находится ЗА пределами яндекс карты. Просто ссылка в футере например
			// Находится внутри функции и ymaps т.к. нужно управлять myMap.
			$(document).on('click', '.addMapInfo', function() {
				...
				...
				myMap.container.fitToViewport();
				...
				...
				console.log('click');
			});
		}
	}
}


В такой конструкции если функция getMapBlock() вызвалась например 5 раз, то при клике на кнопку .addMapInfo клик произойдет тоже 5 раз. (в console.log() будет выведено 5 сообщений 'click');

Понятно, что есть такие методы, как $(element).unbind и т.д. НО т.к. все блоки грузятся по ajax (изначально их в коде нету), то необходимо использовать именно $(document).on('click', 'element', function() {

Как решить такую задачку?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@siroper Автор вопроса
А рашение как всегда - самое простое.....
$(document).off('click', '.addMapInfo').on('click', '.addMapInfo', function() {
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы