我有一个表dom元素
<table id='acc001'>...</table>
我创建了一个弹出菜单,在单击该tr元素后获取tr数据
var tr = $('<tr>').appendTo('#acc001');
popupMenu.draw_menu(tr);
var popupMenu = {
menu : [
{'string':'add data','type':'input','callback':function(tr){console.log(tr);}},
{'string':'edit data','type':'input','callback':function(tr){console.log(tr);}}
],
draw_menu : function(tr){
for(i in this.menu)
{
var div = $('<div>',{'text':this.menu[i].string}).appendTo('#infoDiv');
$(div).bind('click',this.menu[i].callback); // i cannot send param for this callback
}
}
}
问题出在创建菜单后但是点击后我无法获得tr内容。 所有console.log都无法显示..
答案 0 :(得分:2)
将其包装在函数中并将tr
传递给回调:
$(div).bind('click',(function(callback) {
return function() { callback(tr) }
})(this.menu[i].callback));
(编辑:this
不会来自事件处理程序内的适当上下文;再次修复)