我会利用jquery在p标签中找到强标签的每个实例,并像这样在p标签中添加一个类:
<p><strong>Bold Text</strong></p>
将成为
<p class="hasStrong"><strong>Bold Text</strong></p>
我不确定实现这一目标的最佳方法,这是一个镜头:
$("p").find("strong").parent("p").addClass("hasStrong");
这样可行,但我希望它选择仅具有强标记的段落,而不是其他任何内容。所以这不会应用这个类:
<p><strong>Bold Text</strong> Here is some more text</p>
我如何使用jQuery做到这一点?
答案 0 :(得分:4)
$('p:has(strong)').filter(function(){
return $(this).contents().length === 1;
}).addClass('hasStrong');
答案 1 :(得分:3)
$('p').filter(function(){
return $(this).text() == $(this).find('strong').text();
}).addClass('yourclass');
答案 2 :(得分:2)
使用jQuery选择文本节点并不容易。如果您不需要这样做,这将更容易。
但是,您仍然可以使用.contents
来检查文本节点长度。
$("p").find("strong:only-child").each(function () {
var $p = $(this).closest('p');
if ($p.contents().length === 1) {
$p.addClass('hasStrong');
}
});
:only-child
非常适合过滤掉合格的节点,但不一定非必要。请注意,这也会突出显示包含子项的<strong>
。如果您不想这样做,请检查$(this)
是否在回调中没有子项。
答案 3 :(得分:2)
仅选择包含一个或多个p
代码且没有文字节点的strong
个代码:
$('p').filter(function() {
return $('strong', this).length == this.childNodes.length;
}).addClass('hasStrong');
答案 4 :(得分:1)
这是另一个考虑文本节点的解决方案:
$("p").filter( function() {
return this.childNodes.length === 1 && $( 'strong', this ).length;
} ).addClass("hasStrong");
答案 5 :(得分:-3)
您可以通过向下钻取然后使用“parent()”将类添加到strong父级来完成此操作。
$( “P”)的儿童( “强”)母体()addClass( “hasStrong”);。。。