Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Хотел поделиться подходом. (https://javascript.ru/forum/project/57394-khotel-podelitsya-podkhodom.html)

mpak 02.08.2015 09:43

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

Rise 02.08.2015 14:18

mpak, это ты так текущий скрипт определил?
document.scripts[document.scripts.length-1]
Цитата:

Сообщение от mpak (Сообщение 382409)
У себя в скриптах не привязываюсь к разным элементам а только к одному.

Привязываюсь к порядку следования скриптов) см. выше
Цитата:

Сообщение от mpak (Сообщение 382409)
При развешивании событий можно не беспокоиться о пересечении с классами или элементами в других модулях и разделах

Стоит беспокоиться лишь о динамически добавляемых скриптах других модулей) см. выше

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

Erolast 05.08.2015 13:43

Цитата:

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


Часовой пояс GMT +3, время: 05:19.