我需要知道View中的el
是否已附加到DOM,因为我正在尝试应用jQuery插件,但该插件要求el
首先在DOM中
灵感来自 How do I check whether a jQuery element is in the DOM?我让这个工作:
render : function() {
...
if (this.$el.closest('html').length) // test if in DOM
this.$el.someJqueryPlugin();
return this;
}
我也需要这个视图的拥有者在el插入到DOM之后立即触发'onshow',这是可行的,但有点笨拙。
我能想到的另一个解决方案是:
var el = $('<div>').appendTo(somewhereInsideDOM);
var view = new view(el:el);
在这种情况下,el将始终附加到DOM并且这种方式更不笨拙,但缺点是操纵el意味着操纵DOM。最后,使用此方法,this.className
不受尊重。需要额外的.addClass(this.className)
。
还有其他解决方案吗?
答案 0 :(得分:1)
如果元素NEEDS在DOM中,最好将其附加到body
,例如
var el = $('<div />').css({ display: 'none' }),
view;
$(body).append(el);
view = new View({ el: el });
el.somejQueryPlugin().show();
希望这有帮助。