模糊整个<li>除了最后一个字</li>

时间:2012-10-28 12:20:43

标签: jquery css node.js socket.io dust.js

我有一个socket.IO应用程序,它还将数据保存到MongoDB。

我正在尝试找到一种模糊整个句子的方法,除了最后一个单词。

行所在的代码:

{#storylines}
<li>{text}</li>
{/storylines}

<input id="newstoryline" name="newstoryline" class="StoryBoard" type="text" placeholder="" onKeyDown="countChars()" onKeyUp="countChars()"/>

Socket.IO:

socket.on('updatechat', function (username, data) {
  $('#newstoryline').before('<li>' + data + '</li>');
});

应用程序还会向模板发送{maxlines}将包含剩余的行数。基本上我正在寻找一种说法:

if {maxlines}&gt; 0然后模糊'数据'除了最后一个字。

所以如果来自服务器的消息是“你好我的名字是吉姆!”我希望成为“ * * * ** Jim!”所以用户只能看到吉姆这个词!

我正在使用Node.JS / Mongoose / Socket.IO

我是否必须在客户端实现某种javascript功能,以检查{maxlines}&gt; 0然后将模糊效果应用于线条或者我会在服务器端执行某些操作吗?

目前,这是服务器发送信息的方式:

app.get('/s/:id', function(req, res){
    Story.findOne({ sid: req.params.id }, function(err, story){
            if (err) {
            res.redirect('/')
        }
        else if(story == null) {
            res.redirect('/')
        }
        else{
    res.render('story', {
        title: 'Storifi',
        storytitle: story.title,
        storylines: story.lines,
        lines: story.maxlines,
        storyid: story.sid
            maxlines: story.maxlines   

                });
            }
        });
});

Socket.IO(服务器端):

socket.on('sendchat', function (data) {
    // we tell the client to execute 'updatechat' with 2 parameters
    io.sockets.in(socket.room).emit('updatechat', socket.username, data);   

1 个答案:

答案 0 :(得分:1)

我同意lix。使用span标记包裹您希望模糊的部分,并使用css将样式应用于该标记。

socket.on('updatechat', function (username, data) {
    var dataSplit= data.split(' ');
    var lastWord =   dataSplit.pop();
    var toBlur=  '<span class="blur">' + dataSplit.join(' ') +  '</span>'; 

     $('#newstoryline').before('<li>' + toBlur + lastWord + '</li>');
});

------------------- CSS --------------------------- ------

.blur{
   color: transparent;  
   text-shadow: 0 0 5px #000;  
}