我有一串日期,我希望在第一个逗号处截断。 例如,我想:
显示:
使用:
var longDay = $('.daily_forecast').text();
var shortDay = jQuery.trim(longDay).substring(0, 12).split(',').slice(0, -1);
$('.daily_forecast').replaceWith('<span>' + shortDay + '</span>');
会正确截断内容,但是,所有结果都会返回&#34;今天&#34;。
我相信我需要使用.each遍历这些元素,但我很难这样做。
谢谢。
答案 0 :(得分:2)
将函数传递给.html()
。它将在与选择器匹配的每个元素上调用,并接收旧内容作为参数。然后它可以返回替换。
$('.daily_forecast').html(function(index, longDay) {
var shortDay = jQuery.trim(longDay).substring(0, 12).split(',').slice(0, -1);
return '<span>' + shortDay + '</span>';
});
如果原始元素包含HTML而不是纯文本,并且您需要在替换之前删除所有标记,则需要明确使用.each
:
$('.daily_forecast').each(function() {
var longDay = $(this).text();
var shortDay = jQuery.trim(longDay).substring(0, 12).split(',').slice(0, -1);
$(this).html('<span>' + shortDay + '</span>');
});
您可能不想使用.replaceWith
,因为这会删除整个.daily_forecast
元素。使用.html()
替换其内容。
答案 1 :(得分:0)
使用regEx
$('.daily_forecast').html(function(index, longDay) {
var shortDay = jQuery.trim(longDay).match(/[\w\s]+(?=,)/)[0]
return '<span>' + shortDay + '</span>';
});