簡體   English   中英

jQuery-延遲后的hasclass

[英]Jquery - hasclass after delay

我想檢查一段時間后元素是否有一個類。 喜歡延遲。 基本上,該類是通過其他功能添加到元素的。 因此,如果我檢查該clicked元素上的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);

這工作了!

您可以使用setTimeout的javascript函數,該函數在miliseconds內作為第二個參數傳遞后執行回調執行

var check_selected = $(this).hasClass('selected');
setTimeout(function(){
  if ( $(this).hasClass('selected') ) {
     console.log(check_selected);
  }
}, 500);

嘗試使用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> 

您可以使用計時器功能

var currObj = this;
    setTimeout(function(){ 
var check_selected = $(currObj ).hasClass('selected');
        if ($(currObj).hasClass('selected')) {
            console.log(check_selected);
        } 
     },500);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM