隐藏div中的某些字符

时间:2012-12-04 20:47:30

标签: jquery html css

我想隐藏一个简单div中包含的某些字符的所有实例 基本上我所追求的是,​​当页面加载某些字符时(在这个例子中's'和'e')将淡出并在句子中留下字符所在的空格。
到目前为止,这是迄今为止: HTML:
<div id="test">hello this is a test this is a test</div>
jQuery的:

$(document).ready(function(){
$('#test').html($('#test').html().replace("s"," "));
$('#test').html($('#test').html().replace("e"," "));
});​

这也是一个有效的jsFiddle:http://jsfiddle.net/6vjt3/
但这一切都是在句子中隐藏第一个's'和'e',而不是其余部分 我希望发生的事情是,jQuery会检测到这些字母并慢慢将它们淡化为白色,因此留下与字母成比例的空格,但根本无法弄清楚如何做到这一点。
任何建议都会很棒!

3 个答案:

答案 0 :(得分:2)

如果您稍后需要返回原始数据,我建议采用这种方法:

var $hiddenElement = $('<span>').addClass('hidden');

$('#test').html($('#test').html().replace(/s/g, $hiddenElement.text(s)));
$('#test').html($('#test').html().replace(/e/g, $hiddenElement.text(s)));

你的CSS

.hidden {
  display: none;
} 

答案 1 :(得分:1)

我试图按照你提到的那样淡出它..参见 DEMO http://jsfiddle.net/6vjt3/3/

完整代码:

$(document).ready(function(){
    var charToReplace = ['s', 'e'];
    $('#test').html(function (i, v) {
        var resultStr = '';
        for (var i = 0; i < v.length; i++ ) {
            var ch = v.charAt(i);

            if ($.inArray(ch, charToReplace) >= 0) {
               resultStr += '<span class="hideMe">' + ch + '</span>';  
            } else {
               resultStr += ch;
            }
        }

        return resultStr;
    }).find('.hideMe').fadeOut(1000, function () {
        $(this).css('opacity', 0).show();            
    });

    //lets bring it all back
    setTimeout(function () {
        $('#test').find('.hideMe').css('opacity', 1);
    }, 5000);
});

在替换时使用带g(全局)的regEx ..见下文,

$('#test').html($('#test').html().replace(/s/g," "));
$('#test').html($('#test').html().replace(/e/g," "));

DEMO: http://jsfiddle.net/6vjt3/1/

答案 2 :(得分:1)

您需要将这些字符包装在SPAN中,然后淡出SPAN。使用替换将立即消除它们,但永远不会淡出。