我正在尝试激活函数调用并传递文件选择事件。以下非JQuery可以正常工作:

class AddBTS
  constructor: () ->

    document.getElementById('upload_JSON').addEventListener('change', @select_json_changehandler, false)


  select_json_changehandler: (evt) =>
    console.log 'evt = ', evt


我尝试了以下操作,它执行了函数调用,但evt是未定义的:

class AddBTS
  constructor: () ->

    $('body').find('#upload_JSON').on 'change', => @select_json_changehandler()

  select_json_changehandler: (evt) =>
    console.log 'evt = ', evt


我如何正确地使用JQuery做第一个代码示例-非常感谢您的帮助:)

最佳答案

在第二个示例中,您将为change事件连接一个不同的事件处理程序,并使该事件处理程序调用select_json_changehandler。您需要有一个参数化的函数作为事件处理程序,该函数将事件作为参数,然后将该事件作为参数传递给select_json_changehandler。

class AddBTS
    constructor: () ->
        $('body').find('#upload_JSON').on 'change', (evt) => @select_json_changehandler evt

    select_json_changehandler: (evt) =>
        console.log 'evt = ', evt

09-25 20:05