0

ドキュメント全体で複数回使用される単純な HTML テンプレートがあります。基本的には、いくつかの要素とclass を持つ別の要素をdivラップする次の要素です。視覚化のために、以下に例を示します。pdivbutton

<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 を正確に把握しています。だから私は自分のコードでやろうとしていることは次のとおりです。

  1. コンテンツが公開され、アンカー タグに URL アドレスが指定されたら、そのアドレスをチェックして、特定の単語が含まれているかどうかを確認します。その単語が見つかった場合は、アンカー テキストを任意のテキストに変更します。
  2. 同じことをもう一度行いますが、今度は 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ステートメントの内容を検索せずにコードがそこで停止するという問題があると思います。その場合、または目前の問題が別のものである場合、どうすればそれを適切に機能させることができますか? これに関する任意の助けをいただければ幸いです。お時間をいただきありがとうございます!

4

2 に答える 2

3

http://jsfiddle.net/zerkms/vj4xZ/2/

条件を次のように変更する必要があります。

} else if ( ($findP.length <= 2) && ($this.find('a[href*="ipad"]').length) ) {

$('a[href*="ipad"]')- 意味 -ドキュメントのどこかにipadin hrefのアンカーがある場合

私が変更したこと - 現在の要素によってのみアンカーの検索が制限されています$this.find()

$('a[href*="ipad"]', $this)代わりに使用することもできますが、同じ作業を行います

于 2012-05-29T04:03:07.617 に答える
1

Hiya が別のデモを作成しました: http://jsfiddle.net/bKJfq/15/

上記のデモでは、次のセレクターのいずれかを使用しています: http://api.jquery.com/category/selectors/

http://api.jquery.com/attribute-contains-selector/

セレクターが一致すると、テキストが目的のテキストに変更されます。

これは非常に冗長な方法です。何か見逃した場合はお知らせください。

これが役立つことを願っています B-)

コード

   $('a[href*="ipad"]').text("Visit iPad site");
   $('a[href*="iphone"]').text("Visit iPhone site");
于 2012-05-29T04:22:25.287 に答える