如果div包含<p>标记</p>,则jQuery返回true或false

时间:2009-06-08 14:34:37

标签: jquery html

让我们看看:

<div><p>this div contains a p tag</p></div>
<div>this one is not</div>

如果div在上例中包含像p这样的特定标记,我如何为布尔值(true或false)赋值?

5 个答案:

答案 0 :(得分:17)

$("div:has(p)").addClass("has-paragraph");

将为包含p个子节点的所有div添加一个类。如果这些段落不是直接的孩子,那就不会捡起来。

注意:这样做:

$("div p").addClass("has-paragraph");

会将类添加到段落而不是div。您可以通过执行以下操作来解决此问题:

$("div p").parents("div").addClass("has-paragraph");

但这将捕获多个div祖先。你可以这样做:

$("div p").parents("div:first").addClass("has-paragraph");

解决这个问题。

或以编程方式更多:

$("div").each(function() {
  if ($(this).find("p").length > 0) {
    // do stuff
  }
});

答案 1 :(得分:5)

给你的div一个ID,然后:

if($('#myDiv p').length) {
    alert('I have a paragraph');
}

答案 2 :(得分:2)

var result = ($('div p').size() > 0);

var result = ($('div p').length > 0);

这会抓住任何p内的任何div。这基本上就是@ karim79所拥有的。

答案 3 :(得分:1)

这是我的赌注:

$("div").each(function(){
    if ($(this).children('p').length>0){
        // do stuff, assign boolean if you want
    }
});

我以为你在寻找直接的孩子。如果没有,请使用

if ($(':has(p)',this).length>0) ...

答案 4 :(得分:0)

不确定您希望如何存储信息,但以下代码将收集包含p标记的所有div标记。

$("div:has(p)").each( function () {
    # Store what you need here
});

如果你有一个特定的div你要测试以下应该基于“truthy”值工作。我确信有人可以通过一些聪明的方法让你得到真正的或真实的价值。

if ( $("#divId:has(p)") ) {
    # Do what you need here
}