我想检查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>
内。
答案 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。