0

インポートして他の人のページに表示するHTMLコンテンツのblobを提供しています。ページの所有者はコンテンツブロブの周りにタイトルを付けますが、タイトルは、ユーザーに表示したいユーザーフレンドリーな名前ではなく、コンテンツを提供するWebサービスの名前です。彼らは彼らの側でタイトルを変更する方法を理解することができません、私たちは私たちのウェブサービスの名前を変更したくありません、そしてそれは数日でデモのためによく見える必要があります。

理想的な解決策は、ポータルツールを使用してタイトルをカスタマイズする方法を理解することですが、デモの前にそれが行われる可能性はほとんどありません。そのため、送信するコンテンツにJavaScriptを含めて、タイトルを変更できると考えていました。これは彼らが何をしているのかを理解するための時間を彼らに買うでしょう。

タイトルのコードは次のようになります。

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

「悪いタイトル」を「良いタイトル」に置き換えたいのですが。jQueryセレクターを使用してページ上でこのテキストを見つけたいのですが、残念ながら、titleClassのクラスを持つ複数のdivアイテムがあり、そのうちの1つだけを変更したいと思います。 divタグ内の「BadTitle」というテキストを確認しますか?または、ページ上のすべての異なるタイトルをループする個別の関数を作成し、それぞれをテストして「不正なタイトル」が含まれているかどうかを確認する必要がありますか?2番目のことをしなければならない場合、誰かが共有するサンプルコードを持っていますか?

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」などのテキスト「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 に答える