2013-08-05 23 views
1

好吧所有你jQuery的優點在那裏。這個問題讓我覺得很毛茸茸。我會盡我所能提供儘可能多的信息,以便清楚。ajax調用後刪除父母的類別

我有一個div的分層結構。它們的設置有三層。每層都有一個刷新按鈕。當我點擊頂層的刷新按鈕時,所有三層的刷新按鈕開始旋轉。這是預期的。

目標是當底層的刷新圖像停止旋轉(意味着ajax調用返回並且該圖層已更新)時,我希望父圖層中的圖像也停止旋轉。

這裏是正在發生的事情代碼:

function refresh(layer){ 
    switch(layer){ 
    case 'bottom layer': 
     Make ajax call for self and then update page 
     Remove class rotate (which makes the image rotate) 
    case 'middle layer': 
     For each middle layer, call refresh with the middle layer's 'bottom layer' children 
    case 'top layer': 
     for each top layer, call refresh with 'middle layer' children 
    } 
} 

編輯 我不能告訴父母刪除類旋轉自己,因爲再對孩子的AJAX調用完成之前將其刪除。我不希望父母的課程被刪除,直到孩子完成ajax調用。

另外,當我說有三層時,我並不是完全誠實的,因爲當圖像被點擊並且圖像在div中並且該div在中間的div層頭等,我可以弄清楚如何導航到父母的DOM,我只想要一些僞代碼和解釋如何不從父母中刪除類旋轉,直到所有的孩子完成更新。 修改編輯

我當然希望這是有道理的。我不能把實際的代碼,因爲它是專有的,相當長,我們不喜歡代碼的牆。

當底層完成更新後,如何告知底層從父級中移除「旋轉」類?

回答

0

我最後寫一個函數,類折給我吧。該函數找到了子div的父項,並從那裏訪問了其所有子項的圖像。通過這種方式,父級可以從其自身及其所有子級中移除旋轉類。

0

也許我不明白你的queston但這樣的:

var divMiddleLayer = ("divBottomLayer").parent(); 
var divTopLayer = ("divMiddleLayer").parent(); 
divMiddleLayer.removeClass("rotate"); 
divTopLayer.removeClass("rotate"); 
+0

我編輯了我的問題。起初我還不夠清楚。我知道如何刪除班級,我只是不希望在孩子完成更新之前刪除父母的班級。這很難與阿賈克斯調用,你知道嗎? – Casey

+0

你是瑞典人嗎? Grymt om duär。 Jag bodde我Sverige我ett標記。 – Casey

0

這可以幫助你在你的方式。

您可以使用jQuery.when()僅在多個Ajax請求完成時執行某些操作。

$.when($.ajax({ 
     url: yoururl, 
     type: "POST" 
    }), $.ajax({ 
     url: yoururl, 
     type: "POST" 
    }), $.ajax({ 
     url: yoururl, 
     type: "POST" 
    }), $.ajax({ 
     url: yoururl, 
     type: "POST" 
    })).done(function() { 
     //do your parent remove 
    }); 

http://api.jquery.com/jQuery.when/

+0

哇。這比我想象的要少得多。我相信這就是我需要的! – Casey