我在EcmaScript 6类中使用JQuery,并且我有一个事件函数,它触发类的实例化,并且事件包含需要与类交互的不同JQuery事件,所以我做.bind()实现这一点,一切正常,除了一个由于某种原因覆盖了属于jquery元素的事件"这个"用"那"我用.bind(那个)方法传递的,这是我的代码(一切都适用于此事件):
var that = this;
$(document).on('click', '[select-file]' , function(event) {
event.preventDefault();
console.log(this);
}.bind(that));
所以控制台日志给了我父类而不是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));
请求帮助,我无法理解这里发生了什么,即使它们之间没有太大的区别,也没有按预期工作;(
答案 0 :(得分:0)
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>