jQuery检测已经渲染的元素?

时间:2013-11-14 14:29:59

标签: javascript jquery html

我需要编写一些能够检测任何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 />') =&gt;假

isDomExists($('<div />')) =&gt;假

isDomExists($('#somediv')) =&gt;真

4 个答案:

答案 0 :(得分:3)

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

function isInDoc(sel) {
    var $sel = jQuery(sel);
    return $sel.length && jQuery.contains(document.documentElement, $sel[0]);
}

答案 1 :(得分:2)

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

http://jsfiddle.net/w6XZZ/

HTML:

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

Javascript:

alert($("<div/>").parent().length);
alert($("#mydiv").parent().length);

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以使用jquerys .ready()Documentation