0

我们正在提供要导入并显示在其他人页面上的 HTML 内容的 blob。页面的所有者在我们的内容 blob 周围放置了一个标题,但标题是我们提供内容的 Web 服务的名称,而不是我们希望向用户显示的用户友好名称。他们不知道如何更改标题,我们不想更改 Web 服务的名称,并且它需要在几天后看起来不错,以便进行演示。

理想的解决方案是让他们弄清楚如何使用他们的门户工具来自定义标题,但这不太可能在演示之前发生。所以我想我们可以在发送给他们的内容中包含一些 JavaScript,这会改变他们的标题。这将为他们争取时间来弄清楚他们在做什么。

他们的标题代码如下所示:

<div class="titleClass"> Bad Title </div>

我想用“好标题”替换“坏标题”。我想使用 jQuery 选择器在页面上找到此文本,但不幸的是,有多个带有 titleClass 类的 div 项,我只想更改其中一个....有没有我可以使用的选择器检查 div 标签内的文本“Bad Title”?还是我必须编写一个单独的函数来遍历页面上所有不同的标题,并测试每个标题是否包含“错误标题”?如果我必须做第二个,有没有人可以分享示例代码?

4

2 回答 2

4

首先获取具有匹配文本的所有元素的集合:

var $matches = $('div.titleClass').filter(function() {
    return $(this).text() == 'Bad Title';
});

然后替换匹配元素的文本:

$matches.each(function() {
    $(this).text('New Title');
});

上面将查找文本与“坏标题”完全匹配的元素。如果您想要任何包含文本“Bad Title”的元素,例如“A Bad Title”,您应该使用indexOfor search,例如:

return $(this).text().indexOf('Bad Title') > -1;

最后一个警告是区分大小写。如果你想做一个不区分大小写的匹配,我会建议这样的事情:

// the div contains Bad Title of whatever case
return $(this).text().search(/Bad Title/i) > -1;

// the div exactly matches Bad Title of whatever case
return $(this).text().search(/Bad Title/i) > == 0;
于 2009-10-28T13:41:12.103 回答
1

也许你想做得更简单?

$(document).ready( function() {
  $('div.titleClass:contains("Bad Title")').text( "Good title" );
});  

查看包含选择器。

于 2009-10-28T14:42:44.413 回答