Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   События. как грамотно назначить (https://javascript.ru/forum/offtopic/33316-sobytiya-kak-gramotno-naznachit.html)

dmitry111 19.11.2012 05:06

События. как грамотно назначить
 
Просматривал скрипты, но так подходящего варианта для себя не нашел.
Вот есть код, читабелен и по полочкам в нем все разложено, но как дело доходит до событий - получается слишком топорно и не изящно и выбивается из общей картины..

Например скрипт

(function(window) {
	var a = {},
		b = function () {
			// что-то там	
		},
		c = function () {
			// еще что-то там
		},
		e = function (target, type, handler) {
			if (target.addEventListener) {
				target.addEventListener(type, handler, false);
			} else {
				target.attachEvent("on" + type, function (event) {
					return handler.call(target, event);
				});
			}
		};

// ну и так далее..  Принцип монолитность и изящность. Все видно и понятно
// Бардак (ИМХО) начинается тут:

	addEvent(document, "mousedown", a);
	addEvent(document, "mousemove", b);
	addEvent(document, "mouseup", g);
	addEvent(document, "mouseup", j);
	addEvent(xxx, "click", f);
	addEvent(eee, "mousedown", v);
	addEvent(ddd, "mouseup", t);
	

	document.onmousedown = function () {
		return false;
	};


// Я до сих пор не научился оформлять события. Неужели это единственный способ задать событие в конкретном примере? Ведь событий может быть очень много, может проще их объединить в одно? Или как лучше?

}(this))



Дайте какой-нибудь скрипт поизучать или посоветуйте где поискать, что посмотреть, где почитать?

melky 19.11.2012 06:25

лучше всего делать в духа типа :
addEvent(document, {
    "mousedown": a,
    mouseup: b
    // ...
});

dmitry111 19.11.2012 15:00

melky,
хорошая идея, попробую реализовать! Спасибо!

monolithed 19.11.2012 21:20

dmitry111,
посмотри как это реализуют в jQuery и пр.

Ну и как вариант отличный от того же jQuery:

var module = [
	{
		type:     'search',
		selector: '#search',
		events: [
			{
				on: 'click',
				handler: function() {
				
				}
			}
		],
	}
	//..,
];


Или так:
var module = [
	{
		type:     'search',
		selector: '#search',
		on: [
			click: function() {
			
			}
		],
	}
	//..,
];


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