绑定到 jquery 功能问题

Bind to jquery function issue

我在 EcmaScript 6 class 中使用 JQuery,我有一个事件函数,它在 class 的实例化时触发,并且该事件包含不同的 JQuery需要与 Class 交互的事件,所以我执行 .bind() 来实现这一点,所有工作正常,除了一个事件由于某种原因覆盖了属于 jquery 元素 "this"我用 .bind(that) 方法传递的 "that" 是我的代码(除此事件外一切正常):

var that = this;
$(document).on('click', '[select-file]' , function(event) {
event.preventDefault();


console.log(this);

}.bind(that));

所以控制台日志给了我父元素 class 而不是 jquery 元素 这按预期工作的地方:

            $(document).on('click', '[open-file-dialoge]', function(event) {
                event.preventDefault();
                  $('[file-dialoge]').modal('show');
                  if ($(this).attr('mitiupload') == 'false') {
                    // check if multiple upload is disabled
                    that.multiUpload = false;
                    $(this).removeAttr('multiple');
                  }
                  that.insertFiles();
            }.bind(that));

请帮忙,我不明白这是怎么回事,即使它们之间没有太大区别,也无法按预期工作;(

Function#bind() 在函数中更改 this 的上下文。如果你想要当前元素,你可以使用 event.currentTarget

var that = {};
$(document).on('click', 'button', function(event) {
  event.preventDefault();
  var el = event.currentTarget;

  console.log('this=', this);
  console.log('el=', el)

}.bind(that));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="test">Click me</button>