2013-07-09 98 views
0

好吧,出於某種原因,我似乎無法得到我所需要的東西。我很接近,但由於某種原因,不能把拼圖的最後一部分放在一起。獲取表格單元格的HTML,然後從中刪除某些元素

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

任何幫助表示讚賞。

+1

爲什麼不只是'var title = $('。fancy-gallery td').text()'? –

+0

@KevinB因爲我需要保留一些錨定的HTML。我剛剛在OP中編輯了HTML,以反映文本中可能包含HTML。 – jkinz

回答

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')); 
    }); 
}); 
0

使用.text代替.html

var title = $(this).parent().text(); 
+0

問題是,我有標題中需要的鏈接。所以我需要保留一些html,但不是全部。 – jkinz

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')); 
    }); 
});