2011-07-14 25 views
1

これは単純なはずですが、理由がわからないので、うまくいかないと思う - もっと重要なこと - 私はGoogleに質問するのに正しい質問を見つけることができません!JSクラスとJQueryイベントハンドラをオーバーライド

以下のように、JSクラスのイベントバインダーのプロトタイプを作成したいのですが、ボックスオブジェクトで.bind()を直接呼び出さない限り、実際には何も起こりません。

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); 
} 
+3

'box'は大文字の' .Bind'を持たないjQueryオブジェクトです。 – pimvdb

答えて

0

イベントをバインドする前にボックスを追加する必要があります。

コードで始まりデバッグするlittle fiddleを作成しました。

FYI:jQueryオブジェクトにはouterHTMLメソッドがありません。したがって、新しく作成されたdivをもう1つ埋め込んでいます。

あなたのコードにいくつかの変更を加えました。その理由はここに投稿していないのです。

+0

私は、outerHTMLがプロトタイプ関数だと言っていたはずです。 – Flashjunky

+0

これはうまくいきますが、バインドの代わりにバインドを使用していたことに気がついたら、私の方法もうまくいったと思います!ありがとうございました :) – Flashjunky

関連する問題