Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Делегирование события (https://javascript.ru/forum/misc/44119-delegirovanie-sobytiya.html)

danik.js 09.01.2014 16:18

Посмотри как это сделано в jQuery

danik.js 10.01.2014 01:44

Цитата:

Сообщение от Ruslan_xDD
this.addEventListener

Но при этом
Цитата:

Сообщение от Ruslan_xDD
e && e.target || window.event.srcElement

Как это понимать? Если ты не поддерживаешь IE8 (ибо в нем нет addEventListener), то нет смысла в window.event.

W3C модель: addEventListener + event.target
old IE модель: attachEvent + window.event.srcElement

ruslan_mart 10.01.2014 05:21

danik.js, это я сюда тестовый пример кинул, я сам там для себя пишу мини-библиотеку, там всё это предусмотрено, а сюда просто написал понятный код, так как код из библы написан в стиле ниндзя и может быть не понятен. :D

.......
	_e = 'addEventListener' in w ? 'addEventListener' : 'attachEvent';
	_eD = dE.matches || dE.matchesSelector || dE.webkitMatchesSelector || dE.oMatchesSelector || dE.mozMatchesSelector || dE.msMatchesSelector;
	.......
	.......
	.......
	e: function(a, b) { //event
		this[_e](a, b, false);
		return this;
	},
	eD: function(a, b, c) { //event delegate
		this.e(a, function(e) {
			var t = e && e.target || w.event.srcElement;
			while(t != this) {
				if(_eD.call(t, b)) {
					c.call(t, e);
					break;
				}
				t = t.parentNode;
			}
		});
		return this;
	},
	.......

danik.js 10.01.2014 06:01

Ну мог бы хотя бы необфусцированный код показать. Или ты так и пишешь ? :D

Цитата:

Сообщение от Ruslan_xDD
while(t != this) {

В IE8 this будет указывать на window, а не на event.currentTarget

ruslan_mart 10.01.2014 12:48

danik.js, я сразу так и пишу, a,b,c и т.д., так как для себя пишу, мне лично всё понятно будет. :D

Цитата:

Сообщение от danik.js
В IE8 this будет указывать на window, а не на event.currentTarget

Сколько же проблем с этими ослами. :(

danik.js 10.01.2014 14:07

Цитата:

Сообщение от Ruslan_xDD
danik.js, я сразу так и пишу, a,b,c и т.д., так как для себя пишу, мне лично всё понятно будет.

Не обольщайся. Через месяц ты спросишь: блядь, я че, бухой был, когда писал это? Код очень быстро забывается, и то, что ты отлично понимаешь сегодня, завтра будет выглядеть как какая-то шифровка.

melky 10.01.2014 14:15

Цитата:

Сообщение от danik.js (Сообщение 291425)
то, что ты отлично понимаешь сегодня, завтра будет выглядеть как какая-то шифровка.

вот в этом и отличие хорошего кода от просто кода :)

ruslan_mart 10.01.2014 14:16

danik.js, да, бывает такое, когда смотрю старые исходники, которые писал около месяца назад и вообще ничего не понимаю. Но сейчас я стараюсь оставлять комментарии, чтобы не запутаться. :) Только вот когда уже буду ставить скрипт на сайт, то все комментики потру и всё сделаю в одну строку. :D Я конечно понимаю, что код мой нафиг никому не нужен будет, но сделаю так из принципа. :D

danik.js 10.01.2014 15:17

Цитата:

Сообщение от Ruslan_xDD
я стараюсь оставлять комментарии, чтобы не запутаться

Есть мнение что комментарии - признак плохого кода. Хороший код должен быть понятен и без комментов. Как минимум нужно давать понятные имена переменным.

ruslan_mart 10.01.2014 15:24

danik.js, ну это то понятно, я оставляю комментарии около самих ф-ций, чтобы не вспоминать, что она означатает. Например: cA - это classAdd, eD - eventDelegate и т.д.

Цитата:

Сообщение от danik.js
Есть мнение что комментарии - признак плохого кода.

Сам комментарии именно к коду никогда не использую, а если использую, то только когда заказщик попросит описать ему код. :)


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