我需要在每个'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 );
}
});
答案 0 :(得分:3)
你试过吗
$(this).parents("dl").find('dd.gallery-caption').text();
答案 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);
}
});
答案 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
类并从中获取文本。