Как правильно вызвать метод внутри класса?

Крот

Новичок
Как правильно вызвать метод внутри класса?

Привет.

Задача: Есть div c id="uid", при наведении на него мышкой - содержимое div'а должно меняться на "Курсор находится на мне!". Если после этого убрать курсор - содержимое должно меняться на "Вы убрали курсор". Реализовать нужно через "класс", без использования глобальных переменных.

Вроде бы всё сделал, но никак не получается внутри класса забиндить собитие для элемента, которое бы вызывало один из методов класса.

PS: Для биндинга event'ов и операций с DOM - использую jQuery.

Код:
<div id="uid">Наведи на меня мышку...</div>

<script>
	function MyClass(el) {

		this.el = el;
		this.privet = "Курсор находится на мне!";
		this.poka = "Вы убрали курсор!";
		
		/* Вот тут я пытаюсь забиндить вызов метода класса на убирание курсора с элемента. */
		this.el.mouseleave(function() {
			this.sayPoka();
		});
		
		this.sayPrivet = function() {
			this.el.html(this.privet);
		}
		
		this.sayPoka = function() {
			this.el.html(this.poka);
		}
		
	}

	$("#uid").mouseenter(function() {
	
		my_class = new MyClass($(this));
		my_class.sayPrivet();
	
	});
</script>
Подскажите пожалуйста как лучше сделать?
Возможно что-то вообще неправильно делаю, не лучшим образом.

Спасибо!
 

Farsh

~ on ~ high ~ wave ~
$('#uid').hover(function() { $(this).text('На мне'); }, function() { $(this).text('А теперь нет'); });

;)
 

Крот

Новичок
:)

Видимо фигово сформулировал вопрос.
Код:
this.el.mouseleave(function() {
	this.sayPoka();
});
Вот это не работает... Хотелось бы узнать каким образом из этого mouseleave вызвать метод класса без его пересоздания. ___и без глобальных переменных___ :)
 

Farsh

~ on ~ high ~ wave ~
потому что this в данном случае относится к элементу, а не к твоему классу. Можешь в функции MyClass написать, например, var my_class = this; и из твоего евента к нему обращаться .
 

Крот

Новичок
Автор оригинала: Farsh
потому что this в данном случае относится к элементу, а не к твоему классу. Можешь в функции MyClass написать, например, var my_class = this; и из твоего евента к нему обращаться .
Пробовал - не работает.
А вообще, конструкцию var self=this; уже использую....
 

Adelf

Administrator
Команда форума
>> Пробовал - не работает.

Потому что не знаешь как работают замыкания. Введи навешивание на событие внутрь MyClass() и заработает.
 
Сверху