如何检查DOM中是否存在jQuery对象?

时间:2015-03-02 13:42:13

标签: javascript jquery dom

我想检查DOM中是否存在jQuery对象(使用Internet Explorer)。我试过这段代码:

observeEditor = function(editor) {
    function update_position() {
        console.log("update_position");
        var $editor = jQuery(editor);
        if (jQuery(document).find($editor).length > 0) {
            // call our function
            setTimeout(update_position, 250);
        }
    }
    setTimeout(update_position, 250);
};

但问题是,即使在我关闭编辑器(它在DOM中不存在)之后,我仍然每250毫秒获得一次此console.log。如何检查DOM中是否存在元素?我收到变量editor作为参数。

请注意,编辑也可能在<iframe>内。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,它并不理想,但它有效。我为每个编辑器提供了一个独特的数据属性:

if (($editor.length === 1) && (typeof($editor.attr('data-editor-id')) === 'undefined')) {
    $editor.attr('data-editor-id', Math.floor((Math.random() * 900000000000000) + 100000000000000));
}

然后我改变了功能:

observeEditor = function(editor) {
    var $editor = jQuery(editor);
    var editor_id = undefined;
    if (($editor.length === 1) && (!(typeof($editor.attr('data-editor-id')) === 'undefined'))) {
        editor_id = $editor.attr('data-editor-id');
    }
    function update_position() {
        console.log("update_position");
        if (jQuery(document).find('[data-editor-id="' + editor_id + '"]').length > 0) {
            // call our function
            setTimeout(update_position, 100);
        }
    }
    setTimeout(update_position, 100);
};

顺便说一下,我把时间改为100毫秒,因为它太慢了250。