2011-07-07 104 views
0

我一直在使用.expander來處理包含動態jQuery數據的div(即DOM被加載後)的問題。用戶確實建議嘗試使用.live(),這讓我更接近了一步,但它會產生一些古怪,如下圖所示。我怎樣才能讓jQuery .live()和.expander在一起正常工作?

我指的是一個單獨的問題,其中https://stackoverflow.com/users/830804/eric建議我嘗試.live(): How can I get the expander function to work with dynamic jQuery data?

注:幻燈片1-4位於我剛纔的問題在這裏:

How can I get the expander function to work with dynamic jQuery data?

對於幻燈片5-6,請參見下文。

SLIDE 5:使用.live()到每個模塊

滑動件6在創建exandable /可摺疊格的用戶界面:點擊DIV幾次的結果...它增加了多個崩潰鏈接

幻燈片7:使用.live()的目標動態jQuery的數據

感謝您的任何意見喲功能你可以提供。

Slide 5

Slide 6

Slide 7

+1

作爲一個方面說明,在圖像中放置代碼塊非常煩人。修改通常基於發佈的代碼。我不能複製和粘貼代碼,當它在圖像中時,通過jsfiddle或發佈解決方案進行測試。 –

+0

對不起,下次注意。感謝您的迴應。 –

回答

2

您最初的答案是錯的。你想要做的就是在AJAX內容加載後設置一個擴展綁定,而不是點擊。這裏是僞代碼。

$.get('...' function(d) { 
    $('#dynamiclongp').text(d).expander(...); 
}); 

發生了什麼是.expander每次單擊標籤隱藏div時都會被調用。我不確定何時加載動態數據,但您想在設置內容後立即綁定擴展器一次,並且只綁定一次。

如果出於某種原因無法訪問AJAX回調函數,只要確保您只綁定一次事件即可。

var bound = false; 
$('div.tags-hidden').live('click', function() { 
    if(!bound) { 
     $(this).find('p').expander(...); 
     bound = true; 
    } 
}); 
+0

非常感謝代碼和解釋。我現在將與此合作。你搖滾,謝謝。 –

+0

亞當,這是偉大的工作...現在唯一的事情是我試圖讓崩潰發生在頁面加載。就像現在這樣,只有當我點擊某個地方的div並顯示時,纔會發生崩潰。如何實例化這個沒有點擊和onload? –

+0

您無法在加載時執行此操作。內容在加載時不存在。您需要在加載您的AJAX函數中的內容後立即執行此操作。看到我的第一個代碼塊 - 這就是它要解決的問題。 –

相關問題