好吧,出于某种原因,我似乎无法得到我需要的东西。我很接近,但由于某种原因,不能把最后一块拼图放在一起。
HTML:
<table>
<tr>
<td>
<a href="/path/to/larger/image.jpg"><img src="/path/to/image.jpg"/></a>
<br/>Some caption <a href="http://somesite.com">text</a>.
</td>
</tr>
</table>
JavaScript:
$(function(){
$('.fancy-gallery td > a').each(function(){
var title = $(this).parent().html();
$(this).attr('data-fancybox-title', title);
$(this).attr('data-fancybox-group', 'group-' + $(this).closest('.textarea').attr('id'));
});
});
所以这给了我TD的一切,包括第一个锚和图像。我尝试过使用.remove()并且没有用,我也尝试过使用.not,这也没用。
基本上我需要做的是删除第一个<a/>
标记和任何换行符(例如<br/>
)。然后将其分配给data-fancybox-title属性。
感谢任何帮助。
答案 0 :(得分:2)
克隆td,删除锚标记,然后获取文本。
$(function(){
$('.fancy-gallery td').each(function(){
var title = $(this).clone().find("a").remove().end().text();
$(this).attr('data-fancybox-title', title);
$(this).attr('data-fancybox-group', 'group-' + $(this).closest('.textarea').attr('id'));
});
});
答案 1 :(得分:1)
我找到了答案。感谢@KevinB帮助我开始走正确的道路。以下是那些希望做同样事情的人的答案:
$(function(){
$('.fancy-gallery td').each(function(){
var title = $(this).clone().find('a:has(img), br').remove().end().html();
$(this).children('a').has('img').attr('data-fancybox-title', title).addClass($(this).attr('id'));
});
});
答案 2 :(得分:0)
使用.text
代替.html
var title = $(this).parent().text();