2012-03-22 51 views
1
<table id="here" border="1"> 
    <tr><td>London</td><td>[email protected]</td><td>aaa</td><td>aaa</td></tr> 
    <tr><td>Manchester</td><td>[email protected]</td><td>aaa</td><td>aaa</td></tr> 
    <tr><td>Liverpool</td><td>[email protected]</td><td>aaa</td><td>aaa</td></tr> 
    <tr><td>Ipswich</td><td>[email protected]</td><td>aaa</td><td>aaa</td></tr> 
</table> 

是否可能添加鏈接mailto:對於帶有jQuery電子郵件地址的第二列(不修改HTML)?如果是,如何?添加mailto:用jQuery?

http://jsfiddle.net/zwsMD/1/

回答

4

您可以用a元素將每個第二個td的內容替換爲mailto: href:http://jsfiddle.net/zwsMD/5/

​$("#here td:nth-child(2)").each(function() { 
    var email = $(this).text(); 

    // replace contents 
    $(this).html(
     $("<a>").attr("href", "mailto:" + email).text(email) 
    ); 
});​​​​​​​​​​​​​​​​​​​​ 
2

你可以做這樣的事情在這裏http://jsfiddle.net/zwsMD/6/

+1

這可能是一個好主意,不使全局變量。 – pimvdb 2012-03-22 13:48:59

+1

@pimvdb是的,當然,我添加var它是一個愚蠢的錯誤! :) – 2012-03-22 14:06:09

2

​$('td:nth-child(2)').each(function(){ 
    var text = $(this).text(); 
    var href = "mailto:"+text; 
    var $a = $('<a>', { href: href, text: text}); 
    $(this).text('').append($a); 
});​​​​​​​​​​​​​​​​​​​​ 

撥弄假設它總是每行的第二td,你可以遍歷這些元素和wrapcontents一個a元素:

$("#here td:nth-child(2)").each(function() { 
    $(this).contents().wrap("<a href='mailto:" + $(this).text() + "'>"); 
});​ 

這裏是working example

2

您將需要遍歷每一行,找到您想要的單元格並在內容周圍包圍鏈接。您可以使用wrapInner

$("#here tr").each(function() { 
    var td = $(this).children().eq(1); 
    var email = "mailto:" + td.text(); 
    td.wrapInner($("<a>").prop("href", email)); 
});​ 

Live example