使用jQuery添加mailto:

时间:2012-03-22 13:41:20

标签: javascript jquery html email

<table id="here" border="1">
    <tr><td>London</td><td>london@us.uk</td><td>aaa</td><td>aaa</td></tr>
    <tr><td>Manchester</td><td>manchester@us.uk</td><td>aaa</td><td>aaa</td></tr>
    <tr><td>Liverpool</td><td>liverpool@us.uk</td><td>aaa</td><td>aaa</td></tr>
    <tr><td>Ipswich</td><td>ipswich@us.uk</td><td>aaa</td><td>aaa</td></tr>
</table>

是否可以添加链接mailto:对于带有jQuery的电子邮件地址的第二列(不是修改HTML)?如果是,怎么样?

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

4 个答案:

答案 0 :(得分:5)

您可以使用td href:http://jsfiddle.net/zwsMD/5/a元素替换为每秒mailto:的内容。

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

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

答案 1 :(得分: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);
});​​​​​​​​​​​​​​​​​​​​

在这里摆弄http://jsfiddle.net/zwsMD/6/

答案 2 :(得分:2)

假设它始终是每行的第二个td,您可以在a元素中迭代这些元素和wrap contents

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

这是working example

答案 3 :(得分: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