0

我知道 jQuery,但我在 RegEx 中有点菜鸟。

<span class="subscription-price"> 
    <span class="amount">$15</span> / month with a 29-day free trial
</span>

我想隐藏 29 天免费试用(有 XX 天免费试用),可以使用 jQuery RegEx 吗?或任何其他方法?

我想要的结果是

 "$15 / month" Instead of "$15 / month with a 29-day free trial"

在此先感谢,阿杰

4

5 回答 5

2

要完全删除这些词:

$('.subscription-price').each(function(){
    var text = $(this).find('.amount')[0].nextSibling;
    text.nodeValue = text.nodeValue.replace('29-day free trial','');
});

JS 小提琴演示

要删除第一个之后的所有内容span

$('.subscription-price').each(function(){
    var text = $(this).find('.amount')[0].nextSibling;
    text.parentNode.removeChild(text);
});

JS 小提琴演示

要隐藏它,您需要包装另一个元素,以便 CSS 定位这些单词:

$('.subscription-price').html(function(i,h){
    return h.replace('29-day free trial', function(a){
        return '<span class="hideMe">' + a + '</span>';
    });
});

再加上CSS:

span.hideMe {
    display: none;
}

JS 小提琴演示

或者,再次隐藏以下所有内容span

$('.subscription-price').each(function(i,h){
    var text = $(this).find('span')[0].nextSibling;
    $(text).wrap('<span class="hideMe"></span>');
});

JS 小提琴演示

再次隐藏“29 天...”部分,允许使用各种数字而不是29

$('.subscription-price').html(function(i,h){
    return h.replace(/(\d{1,2}-.+)/, function(a){
        console.log(a);
        return '<span class="hideMe">' + a + '</span>';
    });
});

JS 小提琴演示

显然,要隐藏元素之后的所有内容.amount,最后一个代码块之前的 jQuery 片段仍然可以工作,因为它不是基于数字隐藏,而是它在 DOM 中的位置。

于 2013-07-03T06:56:07.883 回答
1

使用替换()

var myStr = $('.subscription-price').text().replace(/ with a \d\d?-day free trial/g,'');

然后将其设置为文本,使其“隐藏”

$('.subscription-price').text(myStr);

因此,现在您将 ' 替换为 XX 天免费试用版' 和 ''(空字符串)。

于 2013-07-03T06:55:26.183 回答
1

尝试这个,

$(function(){
   var txt=$('.subscription-price').html().split('with ')[0];
   $('.subscription-price').html(txt);
});

小提琴 http://jsfiddle.net/p3vs6/

于 2013-07-03T06:57:46.220 回答
1

如果文本始终保持不变,则可以使用:

var price_html = $(".subscription-price").html();
$(".subscription-price").html(price_html.replace(" with a 29-day free trial", ""));

这里看看:JSFIDDLE

希望这可以帮助!

于 2013-07-03T06:58:24.097 回答
0

尝试这个 ...

$('.subscription-price').each(function(){
var text = $(this).find('.amount')[0].nextSibling;
text.nodeValue = text.nodeValue.replace('/\s*month.*','');
});
于 2013-07-03T11:57:19.033 回答