2011-08-08 18 views
1

下面的代碼有一個明顯的原因,爲什麼這不起作用?Jquery ajaxStop

當我運行時,「ajaxBusy」div永遠不會隱藏,「內容」div永遠不會改變它的可見性設置。所以我傾向於相信.ajaxStop永遠不會發生。我嘗試刪除所有其他的JavaScript函數,但這並沒有改變任何東西。

在HTML文檔的頭部,我有:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<!--<script type="text/javascript"> 
    $(function() { 
     $("#content").css('visibility','hidden'); 
     $('#ajaxBusy').ajaxStop(function(){ 
     alert('it ran!'); 
      $('#ajaxBusy').hide(); 
      $("#content").css('visibility','visible'); 
     }); 
    }); 
</script> --> 
<script src="sliding.form.js" type="text/javascript"></script> 
<script src="scripts.js" type="text/javascript"></script> 

其中 「ajaxBusy」 包含裝載GI。這是評論代碼,這是不正確運行。

+0

ajax處理程序在哪裏?如果沒有ajax,停止將永遠不會運行 – Neal

+0

您是否也可以發佈相關的html部分?除了使用不是最佳選項的可見性之外,ajaxBusy部分應該可以工作。 –

+0

我沒有使用.hide(),因爲當我試圖做相應的.show()時,它會打破div。 – scifirocket

回答

0

hide()設置元素css屬性display:none檢查Firebug進行確認。 visibility:visible將不會做任何事情,因爲顯示和可見性屬性以不同方式隱藏div。可見度隱藏到div中,但保留在DOM中,即無論div是否顯示爲空。 display:none顯示DOM,就好像div永遠不會在那裏一樣。

+0

我得到的是顯示:任何機會都沒有#content? – Ali

0

嘗試使用

$('#ajaxBusy').ajaxStop(function(){ 
     $(this).hide(); 
     $("#content").show(); 
    }); 

因爲這是它是如何在jQuery的API文檔使用。 http://api.jquery.com/ajaxStop/。使用.show();.hide();而不是設置visibility css屬性。

此外,我只需在回調中刪除alert('it ran!');即可在瀏覽器中獲取有關是否被調用的快速反饋。

+0

該警報未顯示。 – scifirocket

+0

好的。何時調用有關的Ajax請求?在調用ajaxStop之前,ajax請求是否可能被觸發? –

+0

這是應該發生的事情嗎?所有ajax請求在調用ajaxStop之前觸發?一旦所有的Ajax運行,然後調用ajaxStop,對吧? – scifirocket

1

請確保您在調用您的ajax請求之前綁定.ajaxStop。我在代碼中看不到任何ajax,我認爲這不是問題。 :)