2014-02-06 25 views
0

我有一块jQuery,我无法完成。我有2个防弹背心图像。点击一个按钮后,会出现1。当另一个被点击时,所有背心必须先被隐藏。现在背心都出现了,然后1消失。如何知道函数jQuery何时完成

这是我的例子:http://bykwien.nl/soldier/voorbeeld.html

上的jsfiddle完整预览: http://jsfiddle.net/8DPCf/

$('#vest1').click(function(){ 
      $('.vest').addClass('hide', function(){ 
       $('.vest1').removeClass('hide'); 
      }) 
     }); 

     $('#vest2').click(function(){ 
      $('.vest').addClass('hide', function(){ 
       $('.vest2').removeClass('hide'); 
      }) 
     }); 

回答

2

只需卸下回调将会使整个事情的工作,在这里看到:

http://jsfiddle.net/8DPCf/1/

$('#vest2').click(function(){ 
    $('.vest').addClass('hide', function(){ 
     $('.vest2').removeClass('hide'); 
    }) 
}); 

成为

$('#vest2').click(function(){ 
    $('.vest').addClass('hide'); 
    $('.vest2').removeClass('hide'); 
}); 

按照jQuery documentation,该addClass方法没有回调的参数,它也并不需要,因为它不会做任何事情异步地。

+0

它的工作,但我的下一个问题:1周或2的div将显示upClick。如果你切换,背心都会下降一点。新的小提琴:http://jsfiddle.net/8DPCf/4/新的现场实例:http://www.bykwien.nl/soldier2/voorbeeld.html –

2

快速修复

我不认为你需要使用这方面的任何回调函数,只需做2个调用顺序如下所示:

$('#vest1').click(function(){ 
    $('.vest').addClass('hide'); 
    $('.vest1').removeClass('hide'); 
}); 

$('#vest2').click(function(){ 
    $('.vest').addClass('hide'); 
    $('.vest2').removeClass('hide'); 
}); 

Here is a working example

高级解决方案

为了使我t时一般,允许背心,你可以创建一个单一的事件处理程序,并确定使用点击的按钮id背心类的x个......

更改按钮HTML像这样(加类):

<div class="item-checkbox vest-button" id="vest1"></div> 
<div class="item-checkbox vest-button" id="vest2"></div> 

而JavaScript如下:

//add event to all vest elements, and use this to determine which one is clicked 
$('.vest-button').click(function(){ 
    $('.vest').addClass('hide'); 
    var className = '.' + $(this).attr("id"); 
    $(className).removeClass('hide'); 
}); 

Here it is in action

相关问题