2013-02-13 2 views
1

Я пытаюсь сделать эффект пишущей машинки с jquery для отображения сообщений в последовательности с несколькими секундами между каждым сообщением.Эффект пишущей машинки с сообщениями последовательности jQuery

вот мой код jsfiddle

var where, when; //added 
$.fn.teletype = function(opts){ 
    var $this = this, 
     defaults = { 
      animDelay: 50 
     }, 
     settings = $.extend(defaults, opts); 

    var letters = settings.text.length; //added 

    where = '#' + $($this).attr('id'); //added 
    when = settings.animDelay; //added 

    $.each(settings.text, function(i, letter){ 
     setTimeout(function(){ 
      $this.html($this.html() + letter);  
     }, settings.animDelay * i); 
    }); 
}; 
$(function(){ 
    $('#container1').teletype({ 
     animDelay: 100, 
     text: 'This is message 1' 
    }); 
    $('#container2').teletype({ 
     animDelay: 100, 
     text: 'this is message 2' 
    }); 
}); 

, но проблема в том, что мои сообщения бегут все вместе

Как я могу контролировать время между сообщениями?

+1

Вы могли бы [использовать это] (http://onehackoranother.com/projects/jquery/jquery-grab-bag/text-effects .html). –

+0

Эффект пишущей машинки работает со мной, моя проблема заключается в управлении внешним видом сообщений. –

+0

Вы хотите отобразить 'это сообщение 2' после того, как анимация' this is message 1' завершена. Правильно ? – Jashwant

ответ

0

JSFiddle Обновлено: http://jsfiddle.net/dnkwp/19/

и код ниже

var where, when, iteration; //added 

iteration = 0; 
bigDelay = 0; 
$.fn.teletype = function(opts){ 
    iteration++; 
    var $this = this, 
     defaults = { 
      animDelay: 50 
     }, 
     settings = $.extend(defaults, opts); 

    var letters = settings.text.length; //added 

    where = '#' + $($this).attr('id'); //added 
    when = settings.animDelay; //added 

    if (iteration > 1) 
    { 
     bigDelay = bigDelay + settings.text.length * settings.animDelay; 
     setTimeout(function() { 
       $.each(settings.text, function(i, letter){ 

     setTimeout(function(){ 
      $this.html($this.html() + letter); 


     }, settings.animDelay * i); 
    }); 

     }, bigDelay); 
    } 
    else 
    { 

    $.each(settings.text, function(i, letter){ 

     setTimeout(function(){ 
      $this.html($this.html() + letter); 


     }, settings.animDelay * i); 
    }); 
    } 
}; 

$(function(){ 
    $('#container1').teletype({ 
     animDelay: 100, 
     text: 'This is message 1' 
    }); 
    $('#container2').teletype({ 
     animDelay: 100, 
     text: 'this is message 2' 
    }); 
    $('#container3').teletype({ 
     animDelay: 100, 
     text: 'this is message 3' 
    }); 
    $('#container4').teletype({ 
     animDelay: 100, 
     text: 'this is message 4' 
    }); 
}); 


// Added Reversing Function 
+0

спасибо @ adm4632 супер произведение –

Смежные вопросы