Здравствуйте!
Имеется javascript
код в ООП "стиле". В объекте this.callbacks
содержатся функции, которые необходимо вызвать, когда срабатывают события в объекте eventHandler
.
Допустим, пользователь вводит значение в input и должно сработать событие keyup
, которое вызывает функцию getMatches
.
Проблема в том, что функция Plugin
вызывается только один раз при загрузке страницы и ничего не возвращает, вследствие этого, в дальнейшем, события (keyup
, focus
) не срабатывают.
Необходимо каким-то образом внедрить этот код в страницу, чтобы он обрабатывался (вызывался) всегда, как в функциональном стиле.
Код JS:
$(document).ready(function () {
Plugin(); //Вызывается 1 раз, при загрузке документа
});
var Plugin = function () {
var self = this;
this.callbacks = {
findCities: {
City: function (id, city) {
//Do something...
},
getMatches: function (input) {
//Do something...
}
},
eventHandler: {
keyup: function () {
$('example-div').keyup(function (e) { // не срабатывает
self.callbacks.findCities.getMatches(this);
})
},
focus: function () {
$('example-div').focus(function (e) { // не срабатывает
var city = new self.callbacks.findCities.City(0, 'Moscow');
});
}
}
};
Я мог бы написать этот код в обычном функциональном "стиле".
Что-то вроде этого (и это будет работать):
$(document).ready(function () {
$('example-div').keyup(function (e) {
getMatches(this);
});
$('example-div').focus(function (e) {
var city = new City(0, 'Moscow');
});
});
function City(id, city) {
//Do something...
}
function getMatches(input) {
//Do something...
}
Как-то так(но непонятно, при чём тут ООП):
$(document).ready(function () {
Plugin(); //Вызывается 1 раз, при загрузке документа
});
function Plugin() {
var callbacks = {
findCities: {
City: function (id, city) {
//Do something...
},
getMatches: function (input) {
//Do something...
}
}
};
$('example-div').keyup(function (e) { // не срабатывает
callbacks.findCities.getMatches(this);
});
$('example-div').focus(function (e) { // не срабатывает
var city = new callbacks.findCities.City(0, 'Moscow');
});
};
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
При просмотре туториалов, связанных с версткой заметил, что часто перед началом работы, авторы задают какие-то стили по умолчанию, переопределяют...
Отлаживаю MVC приложение, вношу изменения в CSS в интерфейсе в VS, запускаю отладкуИ CSS остается старой версии до изменений