这是我的代码
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函数的返回数据以确认函数?????
为什么'this'不是addproduct对象?
答案 0 :(得分:1)
尝试
var confirmButton = $("<button class='dbtn'>confirm</button>")
.on('click',this.getData(),this.confirm);
getData
返回要传递给事件处理程序的数据对象,因此您必须实际调用该函数。然后你应该能够看到这里的数据
confirm:function(e){
console.log(e.data);
},