使用jQuery检测div内的元素

问题描述:

您的体验中检测div内是否存在元素的最佳方式是什么?使用jQuery检测div内的元素

我目前使用这样的:

if (($('.parentDiv').width()) > 0){ 
    //Do something 
} 

必须有一个更优雅的方式。

+1

只有元素或纯文本? – Alp 2012-04-23 14:23:11

+0

我只是在元素之外没有特别的文本节点。 – Ollie 2012-04-23 14:28:29

+0

@Ollie。因此'.width()'被打破了...它不会被** 0 **'

foo
' – gdoron 2012-04-23 14:29:50

可能不是你想要的,但考虑到有至少在你的要求有点混乱,你可以考虑,如果在所有事情是在容器内:元素,文本,等等。

假设你有一个空的div:

<div class="parentDiv"></div>​ 

然后$(".parentDiv").html().length == 0指示其空虚。

如果格不为空:

<div class="parentDiv"> </div>​ 
<div class="parentDiv"><div></div></div>​ 

然后$(".parentDiv").html().length将指示其occupiedness如果你希望只检查元素(分别返回1和11,在这些情况下)

,或特定元素,那么$(".parentDiv").children()就是要走的路。

+0

正是我之后,谢谢 – Ollie 2012-04-23 14:39:41

如果为空手段甚至没有文本节点:

if ($('.parentDiv').contents().length){ 
    //Do stuff  
} 

或:

$('.parentDiv:not(:empty)') // which is nice... 

.contentsdocs

说明:获取每个元素的孩子们在集匹配元素,包括文字和评论节点。

如果你只关心元素,而不是文本节点的

if ($('.parentDiv').children().length){ 
    //Do stuff  
} 

使用children()功能

$('.parentDiv').children() 
+1

OP要求检测元素而不是文本。 – Gabe 2012-04-23 14:24:12

+0

你是对的,但阅读[这个评论](http://*.com/questions/10282396/detect-an-element-inside-a-div-using-jquery#comment13227599_10282396) – gdoron 2012-04-23 14:32:42

假设你只关心内容(而不是文本节点),你可以检查是否有任何元素children

if($('.parentDiv').children().length) { 
    //Do stuff 
} 

if ($('.parentDiv').children().length > 0) 
{ 
    // do something 
}