1

オブジェクト内でクリック時イベントを定義することは可能ですか(oop)?私はこれに不慣れです。私は次のことを試みてきました:(私はコードを単純化しました(divのCSSなどはありません))

function menu_item(menu_name){
    this.menu_name=menu_name;

    this.create = function(){
        $('body').html("<div id=" + menu_name + " />");
    };  
    
    $('#' + menu_name).on('click',function(){
        alert (menu_name);
    });
}

menu_item("test");
menu_item.create();

指定されたmenu_nameのidを持つdivをクリックすると、(テストとして)名前にアラートを送信したいのですが、これは機能しません...これも可能ですか?

4

1 に答える 1

2

はい、可能です。ただし、コードにOOPコンストラクターが表示されません。関数として呼び出します。

問題は、イベントリスナーを追加しようとしたときに、そのIDを持つ要素がないか、createメソッドを呼び出すと上書きされることです。

これを使って:

function MenuItem(name){
    this.menu_name = name;

    this.create = function() {
        var el = $("<div id=" + menu_name + " />");
        el.on('click',function(){
            alert (menu_name);
        });
        $('body').append(el);
    };
}

var menu = new MenuItem("test");
menu.create();
于 2012-10-01T11:33:58.847 に答える