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函数的返回数据传递给confirm函数??????

为什么'this'不是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 回答