jquery 事件中的参数

Parameter in a jquery event

我想在 jquery 的事件 .click 的参数中传递一个名为 hotTraitement 的对象。所以我这样声明我的对象:

$(window).load(function(){
        container = document.getElementById('tab_traitement');
        var hotTraitement = new Handsontable(container, {
            data: data_traitement});
});

我正试图像这样传递这个对象:

$('#submit_button_traitement').click(function({hotTraitement:hotTraitement})
{
    console.log(hotTraitement);
});

但它不起作用,hotTraitement 未定义。

请帮忙!

尝试用 $(document).ready() 代替 $(window).load() ;利用 .on() , data 属性 of event

$(document).ready([
  function() {
    // define `hotTraitement`
    hotTraitement = {
      "abc": 123
    };
  }, 
  function() {
    // set `event.data` to `hotTraitement`
    $("#submit_button_traitement")
    .on("click", hotTraitement, function(event) {
        // do stuff with `event.data` : `hotTraitement`
        console.log(event.data)
    })
  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="submit_button_traitement">click</div>

为什么要在 onclick 函数中传递 hotTraitement 参数,而不是像这样在 onclick 中简单地访问它

$(window).load(function(){
    container = document.getElementById('tab_traitement');
    var hotTraitement = new Handsontable(container, {
        data: data_traitement});

   $('#submit_button_traitement').click(function(){
      console.log(hotTraitement);
   });
});

试试这个。 将 hotTraitement 变量定义为全局变量。

$('#submit_button_traitement').click({hotTraitement:hotTraitement},function(e){
   console.log(e.data.hotTraitement);
});

简单演示:FIDDLE

更新:

试试这个方法。

$(document).ready(function() {
  var container = document.getElementById('tab_traitement');
  var hotTraitement = new Handsontable(container, {
    data: data_traitement
  });

  //...

  $('#submit_button_traitement').click({
    hotTraitement: hotTraitement
  }, function(e) {
    console.log(e.data.hotTraitement);
  });

});