2012-03-22 9 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は変更されていません)の2番目の列に追加できますか?はいの場合、どうですか?mailto:jQueryを追加しますか?

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

答えて

4

tdの内容は、mailto: href:http://jsfiddle.net/zwsMD/5/a要素で置き換えることができます。

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

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

あなたはそれが常に各行の第二tdだと仮定すると、この

​$('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/

+1

グローバル変数をしないように、良いアイデアかもしれません。 – pimvdb

+1

@pimvdbはい、もちろん、私はvar itwas愚かな間違いを追加! :) –

2

ような何かを行うことができ、あなたはそれらの要素を反復し、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

関連する問題