2011-04-01 55 views
0

我想做到這一點:是否有可能在動態創建的元素上選擇性地禁用jquery ui可選行爲?

$('li.activerun').live(selectable({disabled: true}); 

$('li.activerun').live('selectable', {disabled: true}, someFunction); 

我知道,語法錯誤,將無法運行,但我希望能夠執行等效的,我想知道這是否是可能。我基於ajax提交的結果動態地將.activerun類動態添加到某些列表元素,因此是實時函數。我希望所有具有類.activerun的列表元素不能通過selectable()選擇。

可能嗎?如何禁用未來元素的selectable()?

或者是否可以使用selectable()的過濾器選項來縮小可以選擇的元素的範圍?

$(".selector").selectable({ filter: not .activerow }); 

我將如何使用過濾器在這種情況下,使那些類的不activerow選擇(在未來)

回答

1

有對dom mutation events事件沒有跨瀏覽器支持的所有元素。要實現你正在尋找的東西,你可以使用.livequery()插件。

實況查詢也有能力來 防火功能(回調),當它 當經過 元素不再匹配了新的元素和另一個 函數(回調)相匹配。這個 提供了極大的靈活性和 無數的用例。例如, 以下代碼使用基於 Live Query的函數來實現jQuery 懸停輔助方法,並在 元素不再匹配時將其刪除。

所以,你最終會得到這樣的:

$('li.activerun').livequery(function(){ 
    //do some function 
}); 

不使用插件,你也可以看看setInterval(),看看是否有任何新的li.activerun元素。