0

私は1つのテーブルDOM要素を持っています

<table id='acc001'>...</table>

そして、そのtr要素をクリックした後にtrデータを取得するポップアップメニューを1つ作成します

  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はそれを示すことができません..

  1. では、このコールバックのパラメーターを追加して送信する方法は?
  2. このコードを適切に実行する他の方法はありますか?
4

1 に答える 1

2

tr関数でラップして、コールバックに渡します。

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

(編集:thisイベント ハンドラー内の適切なコンテキストからのものではない; 再度修正)

于 2012-06-07T09:49:27.383 に答える