0

WordPressテーマを開発していて、Fancyboxライトボックスプラグインをコードに組み込んでいます。これは、1つの小さな問題を除いて、正常に機能します。

ただし、最初にコードを示しますので、説明が簡単です。

<dl class='gallery-item'>
    <dt class='gallery-icon'>
        <a href='image.jpg' title='something'><img width="150" height="150" src="image.jpg" class="attachment-thumbnail" title="something" /></a>
    </dt>
    <dd class='wp-caption-text gallery-caption'>
        Description, that should be displayed as title...
    </dd>
</dl>

これは、WordPress標準ギャラリーの1つのギャラリーアイテムの出力です。私がやりたいのは、dd-tagsの説明をライトボックスの画像タイトルに添付することです(ht emomentで、a-tagのタイトルが表示され、それは英数字の文字列です-あまりユーザーフレンドリーではありません)。

ライトボックスのタイトルに何かを割り当てるには、ライトボックスの初期化関数で次のjavascriptを呼び出す必要があります。(このコードは、実際には最初の.wp-caption-text要素のコンテンツをすべての画像タイトルに割り当てます。)

$(document).ready(function(){
    $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox({

    beforeLoad: function(){
        var caption = $('.wp-caption-text').html();
        this.title = caption;
        }
    });
});

上記のコードは期待どおりに機能しますが、これは、クラスwp-caption-textの最初の要素のみがライトボックスとすべての単一画像に割り当てられることを意味します。ただし、ライトボックスで開かれている画像のそれぞれのwp-caption-textのみを取得したいと思います。したがって、$(this)のようなものを使用してから、対応するwp-caption-textに移動し、そのテキストをcaption変数に割り当てる必要があります。

私は最後のポイントと希望に苦しんでいます、あなたは私を助けることができます。これはそれほど難しいことではないはずですが、現時点では手がかりがありません。

ありがとう
ルーカス

4

2 に答える 2

0

これを試して

var caption =  $(this).parent().parent().find('.wp-caption-text').html();

これは、これが 現在のアンカーに対応する場合です

于 2012-09-21T22:45:25.437 に答える
0

マークアップが変更された場合、これは安定します。これが機能しない場合は、thisそれが期待どおりではないことを意味し、それが何であるかを理解する必要があります。.text()また、の代わりにを使用していることに注意して .html()ください。.wp-capition-text 内部にマークアップ(アイコンなど)を追加する場合でも、テキストを取得するだけです。

var caption = $(this.element).closest('.gallery-item').find('.wp-caption-text').text();
于 2012-09-21T22:59:02.367 に答える