我正在尝试将td
元素中的所有文字附加到a
元素作为mailto
链接的主题,但我只能获得第一个最接近的元素文本。如何制作它以便从所有元素中检索文本?如果可能,我宁愿在a
元素中使用tbody
链接而不是tr
包装。
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:test@test.com?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 :(得分:3)
您的代码几乎是正确的,只需选择所有td-tag,获取文本并加入生成的数组:
$('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/
编辑如果您修复了html代码,我的解决方案将会正常运行。 tr标签中不允许使用标签。只允许使用td或th元素。所以请修复你的HTML,它会工作
答案 1 :(得分:1)
我发现了一些问题,但这就是你想要的:
https://jsfiddle.net/uqswr2k3/
var subject = "";
$(".row-2 td").each (function() {
subject = subject + '-' + $(this).html();
});
$(".mailme").attr('href', 'mailto:test@test.com?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出现问题。您正在将主题的值设置为当前迭代,而不是全部收集它们。我放了一个名为subject
的变量来添加每个td
单元格的HTML内容。我用短划线-
将主题中的每个值分开,以使其更清晰。