获取表格单元格的HTML,然后从中删除某些元素

时间:2013-07-09 18:43:16

标签: javascript jquery fancybox

好吧,出于某种原因,我似乎无法得到我需要的东西。我很接近,但由于某种原因,不能把最后一块拼图放在一起。

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属性。

感谢任何帮助。

3 个答案:

答案 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();