2012-04-27 101 views
0

下面這段代碼是通過AJAX加載:AJAX加載腳本不能正常運行

<div class="main"> 
    //some content 
</div>  
<div class="advanced"> 
    //some content 
</div> 
<div class="other"> 
    //some content 
</div> 
<div class="pass"> 
    //some content 
</div> 
<script>$('.advanced,.other,.pass').hide();</script> 

正常加載時,他們隱藏罰款,但通過AJAX加載時它不工作了。爲什麼這樣?我不確定$.on()真的會在這裏幫助。

+1

@Adable標記的jQuery,是不是很明顯? – Joseph 2012-04-27 11:38:46

+0

$ .on()用於綁定事件處理程序,所以這裏不是問題,您使用哪個函數來執行AJAX調用?如果通過jQuery來做,它可能會被剝離出來,所以你需要從調用者頁面中完成。 – GillesC 2012-04-27 11:39:40

+0

@Joseph,許多網站使用Ajax.Net與jQuery結合使用,並不像你明白的那樣明顯。 – 2012-04-27 11:44:10

回答

1

如果上面的例子中是通過jQuery AJAX加載,爲什麼不叫

$(」先進,。其他,.pass。)隱藏()。

完成ajax請求後?

例如:

$.ajax({ 
    url: "Your AJAX URL", 
    dataType: 'html', 
    type: "POST", 
    success: function (json) { 
     // Add you elements to the DOM 
    }, 
    complete: function() { 
     $('.advanced,.other,.pass').hide(); 
    } 
}); 
+0

這適用於我擁有的許多視圖(MVC)。這會在腳本當前不被使用/需要時相當增加腳本的行數(如那樣)。 – Michelle 2012-04-27 11:40:45

+1

@Jack,創建一個common.js,將調用定義爲函數一次,並在需要時重用。 – 2012-04-27 11:43:07

0

根據jQuery

任何嵌入的JavaScript所檢索的數據內的HTML被作爲字符串返回之前被執行。

這可能意味着您的腳本首先執行,然後再設法執行任何操作。

+0

我試着將它們包裝在'$(function(){/ * hide * /});'但它沒有隱藏它們。 – Michelle 2012-04-27 11:45:06