0

これが私のコードです

var addproduct = {
    init:function(){
        var footer = $("<div class='footer'></div>");
        var confirmButton = $("<button class='dbtn'>confirm</button>").on('click',this.confirm);
        var cancelButton = $("<button class='dbtn'>cancel</button>").on('click',this.cancel);
        d.append(footer.append(confirmButton,cancelButton));

        $('body').append(d)
    },

    getData:function(){
        var data={};
        d.find('#basic_info :input').each(function(){
            data[$(this).attr('name')] = $(this).val()
        });
        console.log(data);
        return data;
    },

    confirm:function(e){

        console.log(e.data);
    },

    cancel:function(){
        alert(2);
    }

}

確認ボタンをクリックすると、「d」でフォームを送信したいので、「getData」関数を使用してすべてのフォームデータを取得します。

これが私がしたことです

var confirmButton = $("<button class='dbtn'>confirm</button>").on('click',this.getData,this.confirm);

//output: function()

だから私はハンドラーへのデータパスは関数として正しいことはできないと思いますか?

そして、このように確認機能を変更します

confirm:function(){

     var data = this.getData()
     console.log(data);
    },

 this will not work too , because the 'this' keyword is not the addproduct object,but the confirm button '<button>confirm</button>';

では、getData関数の戻りデータを渡して関数を確認するにはどうすればよいですか?????

そして、なぜ「これ」はaddproductオブジェクトではないのですか?

4

1 に答える 1

1

試す

var confirmButton = $("<button class='dbtn'>confirm</button>")
                     .on('click',this.getData(),this.confirm);

getDataイベントハンドラに渡したいデータオブジェクトを返すので、実際に関数を呼び出す必要があります。次に、ここでデータを表示できるはずです

confirm:function(e){

    console.log(e.data);
},
于 2012-11-24T05:16:35.213 に答える