/ / Виклик функції у події клацання jquery при використанні класів - jquery, class

Виклик функції у події jquery click при використанні класів - jquery, class

Скажімо, я маю це:

test = function() {

this.init = function() {
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");

/*
Now, if I wanted it to call function "dosomething" defined in the class, how would I do that? this.dosomething() obviously doesn"t work.
*/

});
}

this.dosomething = function() {
alert("Did it!");
}

}

var _go = new test();
_go.init();

Відповіді:

1 для відповіді № 1

Ви можете встановити контекст, перш ніж втратити посилання на свій клас:

test = function() {

var context = this;

init = function() {
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
context.dosomething();

});
}

dosomething = function() {
alert("Did it!");
}

}

2 для відповіді № 2

Інкапсулюйте виклик "щось" у змінну javascript у вашій зовнішній функції та посилання на неї у вашій внутрішній функції.

this.init = function() {
var doSomething = this.doSomething;
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");

doSomething();

});
}

Це створює закриття, де внутрішня функція все ще має посилання на змінні у зовнішній функції.


0 для відповіді № 3

Попередньо оголосіть тест новою функцією ().

test = new function() {};

test.init = function() {
test.foo();
};

Я впевнений, що існують інші / кращі способи зробити це, але я знаю, що це працює.