我想检查一段时间后元素是否具有类。喜欢延迟。基本上,该类是通过其他功能添加到元素的。因此,如果我在该单击元素上选中hasClass
,它将返回false。
var check_selected = $(this).hasClass('selected');
if ( $(this).hasClass('selected').delay(500) ) {
console.log(check_selected);
}
这是我正在尝试的方法,但是我想知道是否可以为hasClass
添加延迟,或者通过其他任何方式来实现此目的。但这不起作用
根据建议的答案,我尝试了此操作-
var check_selected = $(this).hasClass('selected');
setTimeout(function(){
if ( $(this).hasClass('selected') ) {
console.log(check_selected);
}
}, 500);
但是控制台中现在没有结果。
只需更新-
该类是在单击时应用的,而我基本上想知道是否应用了该类,因此单击该类,因此我正在使用hasclass。还有其他出路,还是我做错了
编辑-
var _this = this;
var check_selected = $(this).hasClass('selected');
setTimeout(function(){
if ( $(_this).hasClass('selected') ) {
console.log(check_selected);
}
}, 5000);
我正在尝试这样做,但仍然会出错
更新-
var checkSelected = setInterval(function(){
var check_selected = $(_this).hasClass('selected');
if(check_selected) {
clearInterval(checkSelected);
}
console.log(check_selected);
}, 500);
这有效!
答案 0 :(得分:1)
您可以使用setTimeout
的javascript函数,在将miliseconds
作为第二个参数传递后执行回调执行
var check_selected = $(this).hasClass('selected');
setTimeout(function(){
if ( $(this).hasClass('selected') ) {
console.log(check_selected);
}
}, 500);
答案 1 :(得分:1)
尝试setTimeout
来模拟延迟。而且,如果您要反复测试直到被选中,可以尝试setInterval(function(){}, interval)
。如果要停止调用该函数,则需要调用clearInterval
。
$("#test").on("click", function(){
const component = $(this);
setTimeout(function(){
component.addClass("selected");
}, 600);
setTimeout(function(){
var check_selected = component.hasClass('selected');
console.log(check_selected);
}, 500);
var checkSelected = setInterval(function(){
var check_selected = component.hasClass('selected');
if(check_selected) {
clearInterval(checkSelected);
}
console.log(check_selected);
}, 500);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">Check my class</div>
答案 2 :(得分:0)
您可以使用计时器功能
var currObj = this;
setTimeout(function(){
var check_selected = $(currObj ).hasClass('selected');
if ($(currObj).hasClass('selected')) {
console.log(check_selected);
}
},500);