我有一个表 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都无法显示..
- 那么如何为此回调添加和发送参数?
- 还有其他方法可以正确执行此代码吗?
最佳答案
将其包装在函数中并将 tr
传递给回调:
$(div).bind('click',(function(callback) {
return function() { callback(tr) }
})(this.menu[i].callback));
(已编辑:this
不会来自事件处理程序内的正确上下文;已再次修复)
关于javascript - 在这种情况下如何添加带参数的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929410/