我可以将函数返回的数据传递给jquery on()事件吗?

时间:2012-11-24 05:07:28

标签: javascript jquery events

这是我的代码

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对象?

1 个答案:

答案 0 :(得分:1)

尝试

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

getData返回要传递给事件处理程序的数据对象,因此您必须实际调用该函数。然后你应该能够看到这里的数据

confirm:function(e){

    console.log(e.data);
},