0

各「dd」内のテキストを取得し、関連する「a.myClass」の data-description 属性の値として配置する必要があります。「gallery-caption」が存在する場合にのみ data-description 属性が作成されれば完璧です。

HTML

<dl>
    <dt>
       <a class="myClass"></a>
    </dt>
    <dd class="gallery-caption">This is my caption</dd>
</dl>

現在の JS (非稼働)

$(".myClass").each(function(){

     var Caption = $(this).find('dd.gallery-caption').text();

     $(this).attr('data-description', Caption );

});

ご協力いただきありがとうございます

最終作業ソリューション

$(".myClass").each(function(){
     var Caption = $(this).parent().next('dd.gallery-caption').text();

     if (Caption && Caption !== ''){
         $(this).attr('data-description', Caption );
     }
});
4

4 に答える 4

3

やってみました

$(this).parents("dl").find('dd.gallery-caption').text();

http://docs.jquery.com/Traversing/parent

于 2013-03-27T16:03:12.133 に答える
2

設定する前に確認してみませんか?また、 を使用してデータ属性にアクセスできます.data("description")

また、セレクターをCaption微調整する必要があります。

これを試して:

$(".myClass").each(function(){

     var Caption = $(this).parents("dl").find('dd.gallery-caption').text();

     if ($(this).data("data-description")) {
         $(this).data('description', Caption);
     }

});

デモ: http://jsfiddle.net/taju4/

于 2013-03-27T16:03:14.447 に答える
2

キャプションを見つけるには、チェーンを少し上に移動する必要がありました。

$(".myClass").each(function(){
     var Caption = $(this).closest('dl').find('dd.gallery-caption').text();
     if (Caption && Caption !== ''){
         $(this).attr('data-description', Caption );
     }
});

DL 内に複数の DD/DT がある場合は、next() を使用する必要があります。

var Caption = $(this).parent().next('dd.gallery-caption').text();
于 2013-03-27T16:03:39.747 に答える
1

Seedd.gallery-captionは の子ではない.myClassので、 でこれを試してください.next():

var Caption = $(this).parent().next('dd.gallery-caption').text();

ここでは、その親までトラバースし、次に dd の次のレベルに移動して.gallery-captionクラスを見つけ、そこからテキストを取り出します。

同じことがあまりにも達成することができますが.siblings()

var Caption = $(this).parent().siblings('dd.gallery-caption').text();

ここでは、その親までトラバースしてから、同じレベルの兄弟を取得し、.gallery-captionクラスを見つけてそこからテキストを取り出します。

于 2013-03-27T16:03:59.350 に答える