2011-06-25 91 views
1

我用一個很好的方式使用Collapsible jQuery Plugin使可摺疊的fieldsets:雖然沒有字段集動態添加的jQuery .live()用於GUI改變功能

$("fieldset").collapse(); 

,一切工作正常。 可以使用.live()函數來綁定像'click'這樣的事件,我想知道是否可以自動將.collapse()添加到所有動態添加的字段集。

我想:

$("fieldset").live('ready', collapse); 

$("fieldset").live('ready', function() { 
    $("fieldset").collapse(); 
}); 

但它不工作。將「準備好」更改爲「加載」也無濟於事。

有什麼辦法可以將新的動態插入的DOM元素應用到像「.colapse()」這樣的UI好東西嗎?

非常感謝。

回答

-2

jQuery .live()方法需要觸發某些事件。無法使用.live()或.delegate()通過AJAX回調來處理新添加的內容。

爲了做到這一點,您需要使用livequery插件。

這個how to replace $.livequery with $.delegate or $.live論壇主題描述了問題和解決方案的細節。

在我的情況的解決方案(啓用的liveQuery插件)是:

$('fieldset').livequery(function() { 
    $(this).collapse(); 
}); 

就像一個魅力:-)

+0

我不同意這種觀點 - 「無法使用.live()或.delegate()來通過AJAX回調來處理新添加的內容。」這就是.live )does。 – Kon

+0

.live()需要一些事件被觸發,當你從服務器端獲得一些HTML時 - 沒有這樣的事件。jQuery網站引用:「不幸的是,你使用的方式是主要目的對於liveQuery而言,.live()和.delegate()都是事件代理的封裝,whi ch要求,呃...一個事件發生。你不能做liveQuery允許的事情,這是在添加到頁面中的任何元素的上下文中的自動回調運行。「 – Zelid

1

我有一種類似的問題(種),所以這可能會幫助你...

Making a jQuery UI Slider with live()

我基本上來初始化一個jQuery使用實時插件一些元素()和一個自定義事件。

+0

非常感謝,它幫助我找到答案。這個livequery插件可以做到這一點! – Zelid

1

如果它是動態的,那麼爲什麼在創建它之後沒有將摺疊插件附加到DOM對象?

var html = "<fieldset id='my-fieldset'></fieldset>"; 

$('body').appendTo(html); 

$('#my-fieldset').collapse(); 
+0

我的情況動態意味着它是從服務器端返回的HTML部分。 HTML部分被添加到列表中,並且可以僅添加類,而不是唯一的ID :( – Zelid

+0

@ user118657,爲什麼你不能添加唯一的ID?如果它是一個類,那麼命名該類僅用於崩潰並說$('。to-collapse-object')。collapse(); ...設置類,所以當html添加時,你知道你可以調用這個collapse(),而且不管你多少次如果調用多次,希望行爲被忽略 – bdparrish