jQuery if语句查找和替换某些标题文本正在替换所有标题

时间:2018-04-20 04:23:26

标签: jquery

我正在尝试识别某个包含某些文本和类的h4标记(遗憾的是它没有id),然后替换该文本。我有以下if语句,但当h4与此if语句匹配true时,它将替换页面上的所有h4标记,而不是仅替换为true的标记。

我的挑战是我只能通过全局jQuery实现这一点。那是我的垮台吗?

if ($("H4:contains('Topic')") && $('H4').hasClass('boxHeaderTitle')) {
    $('h4').text('Posts');
}

2 个答案:

答案 0 :(得分:2)

你的if表达式有点奇怪。如果以下两个都为真,则表达式将始终评估为true

  • 至少有一个h4包含文字Topic。因为在这种情况下,$("H4:contains('Topic')")将返回真值。
  • 至少有一个h4分配了类boxHeaderTitle。因为在这种情况下,$('H4').hasClass('boxHeaderTitle')将返回真值。

问题在于if的正文中,您将所有h4的文本设置为Posts

正确的方法可能是:

var heading = $("H4:contains('Topic')");

if ( heading.hasClass('boxHeaderTitle')) {
    heading.text('Posts');
}

我假设您要更改包含h4的{​​{1}}的文本,并且还要更改类Topic。或者,您可以尝试不同的方法:

boxHeaderTitle

上述内容适用于多个此类标记。

答案 1 :(得分:0)

尝试

if ($("H4:contains('Topic')") && $('H4').hasClass('boxHeaderTitle')) {
$(this).html('Posts');
}

$("H4.boxHeaderTitle:contains('Topic')").each(function(){
$(this).html('Posts');
});