Событие на document
Вложений: 1
Здравствуйте.
Имеется некий класс с несколькими методами. + Довольно стандартные строки навешивания события на элемент. Код JS.
function Widjet() {
this.id = null;
this.jqlink = null;
this.type = null;
this.add = function () {
};
this.remove = function () {
};
this.copy = function () {
};
this.lock = function () {
};
this.unlock = function () {
};
this.edit = function () {
};
this.activate = function () {
$(document).on('click', function () {
console.log('123');
});
};
this.deactivate = function () {
};
this.hovered = function () {
};
this.dehovered = function () {
};
this.getSerialize = function () {
};
this.load = function () {
};
}
var widjet = new Widjet();
$(document).ready(function () {
$('#button').click(function () {
widjet.activate();
});
});
Описание: При клике на элемент #button, вызывается метод activate, внутри которого вешается событие на document. При последующих кликах на document в консоль должно выводиться 123. Проблема: При первом клике на #button в консоль сразу выводится 123, но по логике не должно, т.к. событие на document еще не висит. В чем может быть проблема? |
Цитата:
Остановить всплытие можно через event.stopPropagation() |
Цитата:
|
Цитата:
var widjet = new Widjet();//супер объект Headline.prototype = widjet;//наследование заголовка от виджета P.S. Вообще, это мой первый проект завязанный на JS, обычно хватает jQuery за глаза. Поэтому прошу особо не ругать за кривизну кода :) |
Цитата:
|
Цитата:
e.stopPropagation();
$(document).on('click', function (e) {
console.log('123');
});
Помогло. По поводу наследования button от document: danik.js имел в виду несколько другое. При клике на button событие поднимается до document. Т.е. проходит по всем родительским элементам, насколько я понял. |
Цитата:
|
Цитата:
|
Цитата:
Есть класс виджет - у него есть методы(пример: добавить, удалить, изменить, заблокировать и т.д.) Есть классы наследники - параграф и заголовок. У классов наследников изменяются только методы добавления и изменения, остальное поведение остается прежним. В чем моя ошибка? |
Цитата:
|
| Часовой пояс GMT +3, время: 19:01. |