Событие на 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. Т.е. проходит по всем родительским элементам, насколько я понял. |
Цитата:
|
Цитата:
|
Цитата:
Есть класс виджет - у него есть методы(пример: добавить, удалить, изменить, заблокировать и т.д.) Есть классы наследники - параграф и заголовок. У классов наследников изменяются только методы добавления и изменения, остальное поведение остается прежним. В чем моя ошибка? |
Цитата:
|
Цитата:
|
Цитата:
widget={ foo: "bar", clone: function(){return Object.create(this)} } paragraph=widget.clone() paragraph.bar="two" H1=widget.clone() H1.bar="two" H2=H1.clone() H2.bar="three" console.log(paragraph.foo, paragraph.bar, H1.foo, H1.bar, H2.foo, H2.bar) // bar two bar two bar three |
Часовой пояс GMT +3, время: 09:10. |