私は Javascript で OOP を初めて使用します。以前のコードの一部を変更して、再利用可能なコードを作成しました。インライン コードの代わりに、それらを Javascript クラスに変換することにしました。
だからここに私のクラスがあります:
function TreeStructure(psi, csi, csc, kwargs) {
this.parentSelectorId = psi;
this.childrenSelectorId = csi;
this.childrenSelectorClass = csc;
kwargs = (typeof kwargs === "undefined") ? 'NoOptionalArguments' : kwargs;
// First Question
$('#' + this.parentSelectorId).click(this.parentSelectHandler());
// Second Question
$('#' + this.parentSelectorId).on('click', this.parentSelectHandler(e));
};
TreeStructure.prototype.parentSelectHandler = function () {
alert("Why is it called after page loads ?!?
it's attached to a click handler huh?");
}
クラスの使用法:
$(document).ready(function(){
tree = new TreeStructure('blahId', 'blahId', 'blahClass');
});
しかし、これを実行すると、(私にとって)予期しないイベントが発生します。だからここに私の2つの質問があります:
parentSelectHandler
ページの読み込み後に関数が呼び出されるのはなぜですか? (期待される動作は、セレクターがクリックされた後に呼び出されると思います)- jQuery イベント ハンドラーでは、イベントを取得してイベント ハンドラー関数に渡すことができますが
parentSelectHandler
、引数を渡そうとする'e'
と、定義されていないと表示されます。
誰でも私を助けてくれますか?