让我们看看:
<div><p>this div contains a p tag</p></div>
<div>this one is not</div>
如果div在上例中包含像p这样的特定标记,我如何为布尔值(true或false)赋值?
答案 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
}