2014-12-07 197 views
0

我想獲得div的值,然後使用jquery輸出它。但是,它似乎並不奏效。jquery - 檢查元素是否爲空

這裏是我的代碼:

<div id="container"> 
     <p id="textbit"></p> 
    </div> 
    <script type="text/javascript"> 

     $(document).ready(function() { 
     var barcode = $('#textbit'); 
     var container = $('#container'); 

     setTimeout(function() {barcode.text('1233')}, 5000); 


     barcode.each(function() { 
      if (barcode.html().length > 0) { 
       var codereader = barcode.text(); 
       container.hide(100); 

       alert('The code is '+ codereader); 
      } 
     }); 

     }); 
     </script> 

它時,我沒有setTimeout的功能,但這個div將動態在今後的使用AJAX來填充工作。

任何幫助,將不勝感激!

+1

所以設置你的邏輯在AJAX相關的回調(成功?)一旦元素內容被修改 – 2014-12-07 13:46:20

+0

請使用jQuery動態事件..和動態函數調用.. – kki3908050 2014-12-07 13:48:25

回答

0

Javascript是單線程的,setTimeout函數是一個異步函數。按照您的想法,它不會延遲5000ms的代碼執行時間。它只調度在5000ms後執行的回調函數。

在調度要執行的回調之後,javascript將繼續執行setTimeout函數以下的代碼。在回調執行5000ms後,setTimeoutYou以下的代碼已被執行。當您嘗試獲取該值時,該html未設置,因爲它已計劃在5000ms後設置。

如果您想模擬AJAX時間延遲,您可以將獲取價值的代碼移動到新函數中,並像這樣在settimeout回調中調用它。

$(document).ready(function() { 
    var barcode = $('#textbit'); 
    var container = $('#container'); 

    var success = function(){ 
     barcode.each(function() { 
     if (barcode.html().length > 0) { 
      var codereader = barcode.text(); 
      container.hide(100); 

      alert('The code is '+ codereader); 
     } 
    } 

    setTimeout(function() { 
     barcode.text('1233'); 
     success(); 
    }); 

    }, 5000); 

}); 
+0

謝謝!這似乎已經成功了! – AlexisP 2014-12-07 14:08:56

0

在這種情況下,您需要檢查AJAX完成後將執行的「完成」承諾。

類似地這樣。

$(document).ready(function() { 
var barcode = $('#textbit'); 
var container = $('#container'); 

setTimeout(function() { 
    barcode.text('1233'); 
    barcode.each(function() { 
     if (barcode.html().length > 0) { 
      var codereader = barcode.text(); 
      container.hide(100); 

      alert('The code is '+ codereader); 
     } 
    }); 
}, 5000); 
}); 

Ajax是一個異步,執行將繼續到下一行,並在稍後完成時指向它。所提供的回調將被執行。您需要按順序執行此次執行。

0

使用AJAX完整的事件:當AJAX將完成它的任務,那麼這個代碼將運行

完整:功能(XHR,狀態){

alert("The request is complete! now u can get other function form here"); 
    getvalues(); 
} 
+0

非常簡單和不錯的選擇,非常感謝! – AlexisP 2014-12-07 14:09:34

+0

如果這是你可以投我的答案 – kki3908050 2014-12-07 14:11:13