在这种情况下,如何使用参数添加回调

how to add callback with param in this condition?

本文关键字:参数 添加 回调 何使用 这种情况下      更新时间:2023-09-26

我有一个表 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 内容。所有控制台.log都无法显示..

  1. 那么如何为此回调添加和发送参数呢?
  2. 还有其他方法可以正确执行此代码吗?

将其包装在函数中并tr传递给回调:

$(div).bind('click',(function(callback) {
    return function() { callback(tr) }
})(this.menu[i].callback));

(已编辑:this不是来自事件处理程序中的适当上下文;再次修复)