Javascript 函数在使用setTimeOut-jQuery后不显示父类
在显示父元素类的函数中使用setTimeout后,Javascript 函数在使用setTimeOut-jQuery后不显示父类,javascript,jquery,Javascript,Jquery,在显示父元素类的函数中使用setTimeout后,console.log中的结果未定义 在用户触发输入中的模糊后,如何检查类 jQuery('body')。on('blur',')。字段包装器输入。字段项',函数(){ setTimeout(函数(){ console.log($(this).closest('.field wrapper').attr('class')); }, 1200); }) 我知道这是一个很容易解决的问题,但您需要定义一个新变量var=this。这是因为var此在新
console.log
中的结果未定义
在用户触发输入中的模糊后,如何检查类
jQuery('body')。on('blur',')。字段包装器输入。字段项',函数(){
setTimeout(函数(){
console.log($(this).closest('.field wrapper').attr('class'));
}, 1200);
})
我知道这是一个很容易解决的问题,但您需要定义一个新变量var=this
。这是因为var此
在新的setTimeout函数中已更改
这就是我所做的
jQuery('body').on('blur', '.field-wrapper input.field-item', function() {
var that = this;
setTimeout(function() {
console.log($(that).closest('.field-wrapper').attr('class'));
alert($(that).closest('.field-wrapper').attr('class'));
}, 1200);
})
我知道这是一个简单的解决方案,但您需要定义一个新变量
var=this
。这是因为var此
在新的setTimeout函数中已更改
这就是我所做的
jQuery('body').on('blur', '.field-wrapper input.field-item', function() {
var that = this;
setTimeout(function() {
console.log($(that).closest('.field-wrapper').attr('class'));
alert($(that).closest('.field-wrapper').attr('class'));
}, 1200);
})
这是因为
This
的上下文在方法setTimeout
的回调内部发生变化,您在这里需要做的是存储$(This)
如下:
var myElement = $(this);
// then do the setTimeout and inside use `myElement` instead of `$(this)`
setTimeout(function(){
console.log(myElement.closest('.field-wrapper').attr('class'));
}, 1200);
这是因为
This
的上下文在方法setTimeout
的回调内部发生变化,您在这里需要做的是存储$(This)
如下:
var myElement = $(this);
// then do the setTimeout and inside use `myElement` instead of `$(this)`
setTimeout(function(){
console.log(myElement.closest('.field-wrapper').attr('class'));
}, 1200);
如果函数丢失了
此
指针,可以使用不绑定到此
jQuery('body').on('blur', '.field-wrapper input.field-item', function () {
setTimeout(() => {
console.log($(this).closest('.field-wrapper').attr('class'));
}, 1200);
})
如果函数丢失了
此
指针,可以使用不绑定到此
jQuery('body').on('blur', '.field-wrapper input.field-item', function () {
setTimeout(() => {
console.log($(this).closest('.field-wrapper').attr('class'));
}, 1200);
})
您需要使用
设置超时
jQuery('body').on('blur',').field wrapper input.field item',function(){
setTimeout(函数(){
console.log($(this).closest('.field wrapper').attr('class'));
}.bind(this),1200);
})
您需要使用设置超时
jQuery('body').on('blur',').field wrapper input.field item',function(){
setTimeout(函数(){
console.log($(this).closest('.field wrapper').attr('class'));
}.bind(this),1200);
})
值得注意的是,任何IE版本都不支持箭头功能,需要像Babel这样的transpiler来提供完整的跨浏览器功能support@MatthewBrent我真的认为互联网应该继续发展,如果2018年有人仍然使用IE
,那么无论如何60%的网站都不会为他服务。每当我在开发一个网站时,我都会100%忽略IE,而支持IE则会多花30%的开发时间,对于2-4%的潜在用户来说…@DanielKrom我真的很同意这种观点,我个人也这么认为,但是,需要注意的是,某些公司环境不允许这种设计。我也同意这一点,在没有IE浏览器的情况下,浏览器兼容性非常重要(即使是微软仍然支持的IE11)这对许多组织来说可能非常重要,而且它也只是稍微补充了一点答案。提到浏览器没有坏处support@MatthewBrent我完全同意提及这一点很重要。值得注意的是,任何IE版本都不支持箭头功能,需要像Babel这样的transpiler来提供完整的跨浏览器功能support@MatthewBrent我真的认为互联网应该继续发展,如果2018年仍有人使用IE
,那么无论如何60%的网站都不会为他服务。每当我在开发一个网站时,我都会100%忽略IE,而支持IE则会多花30%的开发时间,对于2-4%的潜在用户来说…@DanielKrom我真的很同意这种观点,我个人也这么认为,但是,需要注意的是,某些公司环境不允许这种设计。我也同意这一点,在没有IE浏览器的情况下,浏览器兼容性非常重要(即使是微软仍然支持的IE11)这对许多组织来说可能非常重要,而且它也只是稍微补充了一点答案。提到浏览器没有坏处support@MatthewBrent我完全同意提及它很重要,可能是一个输入错误,但在您的箭头函数示例中,setTimeout
似乎已改为setInterval
。@Script47是的,这是一个输入错误。感谢您指出它。我已经说过可能是一个输入错误,但setTimeout
在您的箭头函数示例中似乎已改为setInterval
。@Script47是的,这是一个打字错误。谢谢您指出它。我已经解释过了