在div中获取文本并将其作为另一个属性的值

时间:2013-03-27 16:00:13

标签: jquery attributes return-value

我需要在每个'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>

CURRENT 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 个答案:

答案 0 :(得分:3)

你试过吗

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

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

答案 1 :(得分: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/

答案 2 :(得分: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();

答案 3 :(得分:1)

dd.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类并从中获取文本。