ドキュメント全体で複数回使用される単純な HTML テンプレートがあります。基本的には、いくつかの要素とclass を持つ別の要素をdiv
ラップする次の要素です。視覚化のために、以下に例を示します。p
div
button
<div class="content">
<p>First paragraph</p>
<p>Second paragraph</p>
<div><a class="button" href="http://www.apple.com/ipad/">Change me jQuery!</a></div>
</div>
<div class="content">
<p>First paragraph</p>
<p>Second paragraph</p>
<div><a class="button" href="http://www.apple.com/iphone/">Change me jQuery!</a></div>
</div>
現在、このテンプレートを使用してコンテンツをサイトに公開するユーザーは、そのアンカー タグでまったく同じ URL を使用するとは限りませんが、使用できる URL を正確に把握しています。だから私は自分のコードでやろうとしていることは次のとおりです。
- コンテンツが公開され、アンカー タグに URL アドレスが指定されたら、そのアドレスをチェックして、特定の単語が含まれているかどうかを確認します。その単語が見つかった場合は、アンカー テキストを任意のテキストに変更します。
- 同じことをもう一度行いますが、今度は URL 文字列内の別の単語をチェックします。
ここに私が書いたものがあります:
$('.content').each(function () {
var $this = $(this),
$findP = $this.find('p');
if ($findP.length > 2) {
// Run some code
} else if ( ($findP.length <= 2) && ($('a[href*="ipad"]')) ) {
$this.find('a.button').text('Visit iPad site');
} else if ( ($findP.length <= 2) && ($('a[href*="iphone"]')) ) {
$this.find('a.button').text('Visit iPhone site');
}
});
問題:
- 両方のアンカー タグのテキストは、 jQuery メソッド内の最初のelse ifステートメントで記述したテキストの文字列にのみ変更されます。ここでの私の例では、最初のアンカー タグは「Visit iPad site」というテキストを受け取り、2 番目のアンカー タグは「Visit iPhone site」である必要があります。この例の実用的なフィドルは次のとおりです: http://jsfiddle.net/vj4xZ/1/
.text()
最初の要素が見つかると、すべてのアンカー タグに .text() メソッドの内容が割り当てられ、2 番目のelse ifステートメントの内容を検索せずにコードがそこで停止するという問題があると思います。その場合、または目前の問題が別のものである場合、どうすればそれを適切に機能させることができますか? これに関する任意の助けをいただければ幸いです。お時間をいただきありがとうございます!