2017-08-31 5 views
1

td要素のすべてのテキストをmailtoリンクのa要素に追加しようとしていますが、最初の最も近い要素しか取得できませんテキスト。どのようにしてテキストを取得するようにしますかすべて要素ですか?可能であれば、trラッパーの代わりに、tbody要素内にaというリンクがあると思います。いくつかの要素からa hrefにメール本文を複製する

HTML:

<tbody> 
<tr class="row-2" role="row"> 
    <td class="column-1" tabindex="0" style="">2238221D2</td> 
    <td class="column-2">HPINC</td> 
    <td class="column-3">N7P47AA</td> 
    <td class="column-4">HP USB 3.0 to Gigabit LAN Adapter</td> 
    <td class="column-5" style="display: none;">#4.2</td> 
    <td class="column-6" style="display: none;">16</td> 
    <td class="column-7" style="display: none;">30</td> 
    <td class="column-8" style="display: none;">52</td> 
    <a class="mailme" href="mailto:[email protected]?subject=Product request&body=">mailtolink</a> 
</tr> 
</tbody> 

スクリプト:

$('a.mailme').each(function() { 
    $(this).attr('href', $(this).attr('href') + 
    $(this).closest('a.mailme').prev('td').text()); 
}); 
+0

「*最初の最も近い要素のテキスト*」とはどういう意味ですか? – freginold

+0

私はtd要素のすべての文字列をmailto "HPINC" "N7P47AA"などのサブジェクトとして設定したいと考えています - 今は最初のクローゼットのtd要素から文字列を取得するだけです。 – user3344734

+0

.text()の代わりに.html()を試しましたか? –

答えて

3

あなたのコードはほとんど右である、ちょうどすべてのTD-のタグを選択し、テキストを取得し、結果の配列に参加:

$('a.mailme').each(function() { 
    $(this).attr('href', $(this).attr('href') + 
    $(this).closest('.row-2').children('td').slice(0,-1).map(function() {return $(this).html()}).get().join(',')); 
}); 

作業中:https://jsfiddle.net/21873jcz/

EDITあなたのHTMLコードを修正すると、私の解決策が動作します。タグはtrタグ内では使用できません。 tdまたはth要素のみが許可されます。だからあなたのhtmlを修正し、それが

+0

それは完璧に動作します - ありがとう! – user3344734

1

に動作しますしてください、私はいくつかの問題が見つかりましたが、ここで何をしたいです:

https://jsfiddle.net/uqswr2k3/

var subject = ""; 
 
$(".row-2 td").each (function() { 
 
    subject = subject + '-' + $(this).html(); 
 
}); 
 

 
$(".mailme").attr('href', 'mailto:[email protected]?subject=' + subject + '&body=');
<table> 
 
<tbody> 
 
<tr class="row-2" role="row"> 
 
    <td class="column-1" tabindex="0" style="">2238221D2</td> 
 
    <td class="column-2">HPINC</td> 
 
    <td class="column-3">N7P47AA</td> 
 
    <td class="column-4">HP USB 3.0 to Gigabit LAN Adapter</td> 
 
    <td class="column-5" style="display: none;">#4.2</td> 
 
    <td class="column-6" style="display: none;">16</td> 
 
    <td class="column-7" style="display: none;">30</td> 
 
    <td class="column-8" style="display: none;">52</td> 
 
    <a class="mailme" href="">mailtolink</a> 
 
</tr> 
 
</tbody> 
 
</table>

tbodyが外にあることを確認してくださいjQueryに問題が発生する可能性があります。件名の値を現在の反復に設定し、すべてを収集していませんでした。 という変数を入れて、それぞれのセルのHTMLコンテンツをtdに追加します。被験者の各値をダッシュ​​で区切って-にして、よりきれいにしました。

関連する問題