Класс JS и переопределение обработчиков событий JQuery - PullRequest
1 голос
/ 14 июля 2011

Это должно быть просто, но по причине, которую я не могу понять, это не работает, и - что более важно - я не могу найти правильный вопрос, чтобы задать Google!

То, что я хочу сделать, это создать прототип привязки событий для класса JS, как показано ниже, что на самом деле ничего не происходит, если я не вызываю .bind () непосредственно для объекта box.

function Box()
{
    this.Width = 200;
    this.Height = 200;
    this.WrapperClass = "boxWrapper";
    this.TitleClass = "boxTitle";
    this.ContentClass = "boxContents";
    this.Title = "This is a box";
    this.Content = "This is some box contents";
}

Box.prototype.Html = function()
{
    var box = $('<div></div>').addClass(this.WrapperClass);
    box.append($("<div></div>").addClass(this.TitleClass).append(this.Title));
    box.append($("<div></div>").addClass(this.ContentClass).append(this.Content));
    box.width(this.Width);
    box.height(this.Height);
    return box.outerHTML();
}

Box.prototype.Bind = function(event, eventDelegate)
{
    this.bind(event, eventDelegate);
}

function clickDelegate(message)
{
    alert(message);
}

$(document.ready(function() {
    var box = $(new Box().Html());
    box.Bind('click', clickDelegate('text'));
    $('body').append(box);
}

1 Ответ

0 голосов
/ 01 августа 2011

Вы должны добавить поле перед связыванием событий.

Я создал маленькую скрипку , начиная с вашего кода и отлаживая его.

FYI: у объекта jQuery нет метода externalHTML, поэтому я встроил недавно созданный div в один другой.

Я сделал несколько изменений в вашем коде, поэтому я не публикую его здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...