首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止.detach尝试在DOM中不存在的.detach元素

如何防止.detach尝试在DOM中不存在的.detach元素
EN

Stack Overflow用户
提问于 2013-07-25 06:02:12
回答 2查看 119关注 0票数 0

上下文- jQuery小部件工厂,呈现元素并将它们存储在私有变量中。

代码语言:javascript
复制
_renderInputHolder: function () {

    var self = this;

    this._inputHolder = $(document.createElement('div'))
        .on('focusout', function (e) {
        self._hideInputHolder.apply(self, [e]);
    });

},

_renderTextInput: function () {

    var self = this;

    this._textInput = $(document.createElement('input'))
        .keypress(function (e) {
        if (e.which === 13) {
            self._hideInputHolder();
        }
    });
},

_hideInputHolder: function () {

    this._inputHolder = this._inputHolder.detach();

},

问题-两个独立的元素都有独立的事件试图分离容器元素。当输入键发生在文本输入上时,它会分离inputContainer,但这也会导致在inputContainer上触发一个“焦点”事件,从而导致

代码语言:javascript
复制
Uncaught Error: NotFoundError: DOM Exception 8 

当它试图再次分离它的时候。

有什么最好的方法来确保没有错误地删除输入容器,或者检查.detach()是否可以被调用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-25 07:14:05

可以使用数据()保存状态变量,以查看元素是否被分离。

代码语言:javascript
复制
if(!this._inputHolder.data('detached')){
    this._inputHolder = this._inputHolder.data('detached', true).detach();
}
票数 1
EN

Stack Overflow用户

发布于 2013-07-25 06:06:13

你可以检查是否有元素..。

代码语言:javascript
复制
 _hideInputHolder: function() {
    if ($(this._inputHolder,'body').length) {
         this._inputHolder = this._inputHolder.detach();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17850209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档