Показать сообщение отдельно
  #1 (permalink)  
Старый 07.03.2012, 21:26
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Проблема с return this
Пытаюсь построить конструкцию подобную jQuery. Но возникли проблемы..



function $(data) { return new func(data); }
function func(data) {
	this.obj = document.getElementById(data);
	return this;
}

func.prototype.drag = function(data) {
	var drag = this.obj;
	drag.onmousedown = function(e) {
		var self = this.obj;
		e = $().getEvent(e);
		drag.style.position = 'absolute';
		var coords = $().getCoords(self);
		var shiftX = e.pageX - coords.left;
		var shiftY = e.pageY - coords.top;
		document.onmousemove = function(e) {
			drag.style.left = e.pageX - shiftX + 'px';
			drag.style.top = e.pageY - shiftY + 'px';
		};
		document.onmouseup = function() {
			drag.style.cursor = 'default';
			document.onmousemove = document.onmouseup = document.ondragstart = document.body.onselectstart = null;
		};
	};
	drag.ondragstart = function() { return false; };
}


Обращаюсь так:
$('el').drag();
Всё работает, но мне хотелось бы сделать так, чтобы $('el') возвращало объект этого элемента. Пишу так:
function func(data) {
	this.obj = document.getElementById(data);
	return this.obj;
}


И после этого идёт полный фэйл(( К примеру, лиса негодует и визжит: " mj("el").drag is not a function ".

Ребят, как исправить проблему?
Ответить с цитированием