2010-11-19 2 views
0

Wenn ich also auf klicke, wird .mybox eingeblendet. Ist es möglich, meinen Code unten zu nehmen und etwas wie .animate({'width':'toggle'}) hinzuzufügen oder eine .delay(2000) hinzuzufügen, bevor das erste Mal umgeschaltet wird, dann die Verzögerung nicht aktivieren, wenn das Umschalten das zweite Mal aktiviert wird? Wie würde ich das tun? einfachste/einfachste Art?Jquery: neues FadeToggle, kann ich Code auf der 2. Aktion des Toggle ausführen?

hier ist mein Code, mit zu arbeiten:

$('#mybutton').click(function(){ 
    $('.mybox').fadeToggle(500) 
}) 

Antwort

1

one() Verwendung zu binden, um ein einmaliges Ereignis-Handler, dann verbindlich die "echte" Dauer Event-Handler wird hier arbeiten würde:

var box = $('#box'); 

$('a').one('click', function(){ 
    box.delay(2000).fadeToggle(); 
    $(this).click(function(){ 
     box.fadeToggle(); 
     return false; 
    }); 
    return false; 
}); 

diese einfache Demo Siehe hier: http://jsfiddle.net/yijiang/2m3bb/

1

Hier ist, wie ich es tun würde, mit setTimeout():

var firstClick = true; 

$('#mybutton').click(function(){ 
    if (firstClick) { 
     setTimeout(function() { 
      $('.mybox').fadeToggle(500); 
      firstClick = false; // #mybutton has been clicked once, we no longer want to wait before toggling on subsequent clicks of #mybutton 
     }); 
    } else { 
     $('.mybox').fadeToggle(500); 
    }  
}) 
1

Sie können mit nur toggle() statt fadeToggle() ein bisschen mehr Kontrolle bekommen .

$('#mybutton').click(function(){ 
var firstTime = true; 
$('.mybox').toggle(
    function() { 
     $(this).fadeIn(500); 
    }, 
    function() { 
     if (firstTime) 
     { $(this).delay(2000); } 
     $(this).animate({'width':'toggle'}).fadeOut(500); 
    } 
); 
}) 
Verwandte Themen