jQuery-延迟后的hasclass

时间:2018-09-25 06:42:53

标签: javascript jquery

我想检查一段时间后元素是否具有类。喜欢延迟。基本上,该类是通过其他功能添加到元素的。因此,如果我在该单击元素上选中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);

这有效!

3 个答案:

答案 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);