我使用了一个与replace((和split((相结合的过滤函数。看起来像这个
jQuery('table .abc').filter((i, el) => jQuery(el).text(jQuery(el).text().replace('a', 'b').split(' ')[0] + ' ' + jQuery(el).text().replace('a', 'b').split(' ')[1]))
有没有办法缩短它,这样我就不必使用相同的替换和拆分功能两次了?因为我只需要组合[0]和[1]。
缩短代码
jQuery('table .abc').filter((i, el) =>
jQuery(el).text(jQuery(el).text().replace('a', 'b').split(' ')[0]
+ ' '
+ jQuery(el).text().replace('a', 'b').split(' ')[1]))
您可以使用.text()
的重载,它接受一个函数,并为选择中的每个元素调用该函数(这就是您正在做的,但更简洁(。
由于看起来你只取前两个单词,你也可以使用.slice(0,1)
给予:
$("table .abc").text((i,txt) => txt.replace("a","b").split(" ").slice(0, 2).join(" ") );
工作示例:
$("table .abc").text((i, txt) => txt.replace("a", "b").split(" ").slice(0, 2).join(" "));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class='abc'>This is more than two words</td>
</tr>
<tr>
<td class='abc'>Here is a second line</td>
</tr>
<tr>
<td class='abc'>OneWord</td>
</tr>
</table>