在jQuery中选择包装元素

时间:2015-11-25 09:59:05

标签: javascript jquery css node.js

我正在使用jquery和nodejs在一个非常古老的网页上进行一些过滤,我想选择b包裹的p元素。我的意思是只包含p没有文字的那些。

我想要匹配的内容

<p><b>Some text</b></p>

我不想与之匹配

<p>Some other text and some other elements <a>link</a><b>Some text</b> 
   and some more text of the parent p
</p>

你知道我可以选择第一个被包裹的元素而不是第二个吗?是否有任何选择器可以选择它?

4 个答案:

答案 0 :(得分:1)

您可以使用filter方法:

$('p > b').filter(function() {
   return $(this.parentNode) // get the p element
                .contents() // get all the child nodes
                .not(this) // exclude the current `b` element
                .length === 0; 
});

http://jsfiddle.net/3v6w8a8y/

答案 1 :(得分:1)

尝试使用PRIMARY> db.compliance_name.aggregate([{'$match': {'audit_time': {'$lte': new Date(2015, 11, 24, 23, 59, 59), '$gt': new Date(2015, 1, 1, 0, 0)}}}, {'$group': {'SID': {'$sum': 1}, '_id': {'policy_id': '$policy_ids', 'day': {'$dateToString': {'date': '$audit_time', 'format': '%Y-%m-%d'}}}}}]) { "_id" : { "policy_id" : [ "384509a-9ccc-4305-8678-b80b1d5795c" ], "day" : "2015-11-24" }, "SID" : 1462 } 选择器

&#13;
&#13;
:first-child
&#13;
alert($(">b:first-child", "p").text())
&#13;
&#13;
&#13;

答案 2 :(得分:0)

不确定。你看起来像这样吗?

<强> HTML

 <p>Some other text and some other elements <a>link</a><b>Some text</b> 
    and some more text of the parent p</p>
 <p><b>Some text</b></p>
 <p>Some other text and some other elements <a>link</a><b>Some text</b> 

以及父p的其他一些文本

<强> CSS

 p b:first-child:nth-of-type(1)
 {
    font-size:30px;
 }

DEMO

答案 3 :(得分:0)

使用substring()检查html()的前3个字母是否等于<b>

$("p").each(function() {
   if ($(this).html().substring(0, 3) == "<b>") {
       // Do whatever
   }
});

如此JSFiddle Demo所示。