0

我需要编写一些函数来检测任何 jquery 选择器:是否已经存在于 DOM 中。我怎么能做到这一点。

如果元素呈现,则必须返回 true,如果元素未呈现,则必须返回 false。

可能的选择器:

'<div />'  // text jquery selected will converted to $('<div />') 
$('<div />') // simple jquery selector such as jQuery('<div />')
'#somediv' or .somediv // already rendered DOM element

isDomExists('<div />')=> 假的

isDomExists($('<div />'))=> 假的

isDomExists($('#somediv'))=> 真

4

4 回答 4

3

这将为当前在文档中的元素以及匹配文档中元素的选择器返回 true。

function isInDoc(sel) {
    var $sel = jQuery(sel);
    return $sel.length && jQuery.contains(document.documentElement, $sel[0]);
}
于 2013-11-14T14:35:45.653 回答
2

您还可以检查节点的父节点数量,没有父节点的节点不包含在 DOM 中:

http://jsfiddle.net/w6XZZ/

HTML:

<div id="mydiv"></div>

Javascript:

alert($("<div/>").parent().length);
alert($("#mydiv").parent().length);
于 2013-11-14T14:38:44.853 回答
1

$('<div />') 创建一个新的 DIV 元素(但不附加到 DOM)。你需要的是$('div').length == 0

于 2013-11-14T14:36:58.393 回答
0

您可以只使用 jquery .ready()文档

于 2013-11-14T14:32:24.370 回答