这总是让我着迷。初始化网页上所有可爱的 UI 元素后,我加载了一些内容(例如,模式或选项卡),新加载的内容没有初始化 UI 元素。例如:
$('a.button').button(); // jquery ui button as an example
$('select').chosen(); // chosen ui as another example
$('#content').load('/uri'); // content is not styled :(
我目前的方法是创建需要绑定的元素注册表:
var uiRegistry = {
registry: [],
push: function (func) { this.registry.push(func) },
apply: function (scope) {
$.each(uiRegistry.registry, function (i, func) {
func(scope);
});
}
};
uiRegistry.push(function (scope) {
$('a.button', scope).button();
$('select', scope).chosen();
});
uiRegistry.apply('body'); // content gets styled as per usual
$('#content').load('/uri', function () {
uiRegistry.apply($(this)); // content gets styled :)
});
我不能是唯一有这个问题的人,那么有没有更好的模式来做到这一点?