2

我需要知道el视图中的是否已附加到 DOM,因为我正在尝试应用 jQuery 插件,但该插件要求el首先在 DOM 中。

灵感来自 如何检查 jQuery 元素是否在 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)的。

还有其他解决方案吗?

4

1 回答 1

1

如果元素需要在 DOM 中,最好将其附加到body,例如

var el = $('<div />').css({ display: 'none' }),
    view;

$(body).append(el);
view = new View({ el: el });
el.somejQueryPlugin().show();

希望这可以帮助。

于 2012-10-23T06:53:59.357 回答