Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2015, 09:43
Интересующийся
Отправить личное сообщение для mpak Посмотреть профиль Найти все сообщения от mpak
 
Регистрация: 13.12.2014
Сообщений: 13

Хотел поделиться подходом.
В JQuery есть отличная конструкция .on которая позволяет навешивать события на элемент и все вложенные в него элементы. Я решил немного продолжить данный подход и пойти еще дельше. У себя в скриптах не привязываюсь к разным элементам а только к одному. Причем использую это динамически. Все события вешаются на один элемент в котором написан скрипт. Делаю это так.

<div>
	<script>
		(function($, script){
			$(script).parent().one("init", function(e){
				setTimeout(function(){
					console.log("outerHTML",$(e.currentTarget).get(0).outerHTML)
				}, 100)
			}).on("click", "a", function(){
				alert("click");
			}).trigger("init")
		})(jQuery, document.scripts[document.scripts.length-1])
	</script>
</div>


Все события при таком подходе висят на div никаких классов идентификаторов не нужно. Получается, что переместив скрипт я автоматически перемещаю весь код в другой элемент. При развешивании событий можно не беспокоиться о пересечении с классами или элементами в других модулях и разделах. Удалив вышестоящий элемент я удаляю и весь его код. Все события работают только для элементов находящихся внутри элемента скрипта. Хотелось бы услышать отзывы и возможно кто то сможет внести полезные коррективы.

Последний раз редактировалось mpak, 02.08.2015 в 09:50.
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2015, 14:18
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

mpak, это ты так текущий скрипт определил?
document.scripts[document.scripts.length-1]
Сообщение от mpak Посмотреть сообщение
У себя в скриптах не привязываюсь к разным элементам а только к одному.
Привязываюсь к порядку следования скриптов) см. выше
Сообщение от mpak Посмотреть сообщение
При развешивании событий можно не беспокоиться о пересечении с классами или элементами в других модулях и разделах
Стоит беспокоиться лишь о динамически добавляемых скриптах других модулей) см. выше

PS: нормальные люди пишут скрипты в head, при необходимости в конце body.

Последний раз редактировалось Rise, 02.08.2015 в 14:32.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2015, 13:43
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
PS: нормальные люди пишут скрипты в head, при необходимости в конце body.
Нормальные люди пишут JS-код в конце body, это и загрузку данных не тормозит, и позволяет избавится от всяких $(document).on("ready").
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поделиться новостью ivt32 Элементы интерфейса 2 20.01.2014 13:29
хотел как лучше, а получилось как всегда. Вопрос оптимизации 9xakep Общие вопросы Javascript 13 21.01.2013 17:27