我寫了一些代碼來生成自定義控件。代碼返回一個jQuery元素,調用者將這個jQuery元素附加到DOM。 我將自定義滾動條應用於生成器代碼中的控件,但由於元素尚未附加到DOM,所以無法應用它。當它被附加到DOM時爲jQuery元素啓動OnAppend事件
我的問題:有沒有onAppend事件或類似的東西,以便我應用自定義滾動條的時候,該元素已被添加到DOM?發電機
示例代碼:消費者
function getControl(controlParams){
var $control = $('<div/>');
$control.applyCustomScrollBar(); //Not appended to DOM yet, so doesnt work
return $control;
}
示例代碼:
var $control = getControl(controlParams);
$("body").append($control); //Appending to DOM now
想要做的事,如:
function getControl(controlParams){
var $control = $('<div/>');
$control.onAppend(function(){
$(this).applyCustomScrollBar();
});
return $control;
}
據我所知,沒有這樣的事件。有些突變事件會觸發DOM中的更改,但如果您控制了代碼,則只需創建一個自定義事件並在您每次添加元素時觸發它,因爲這樣會更容易,並且跨瀏覽器。 – adeneo
DOM突變事件將是實現這一目標的一種方式,但您最好只創建自己的自定義事件,並且(假設您使用某種外部API構建此類事件)將其暴露給用戶。 – Graham
@adeneo:這不會是一個選項。可能有大量的消費者。所以我不能告訴消費者隨時都會發生事件。 剛纔想到的另一個想法是修改jquery append方法來觸發此事件。但是,這看起來很亂。每次我進行更新時,我都必須更新jquery文件來獲取此事件。 – pickhunter