2010-10-08 58 views
0

我在编写一些jQuery代码时遇到了一些困难。我想要做的是通过事件处理程序传递多个方法,如$(foo).click(methodOne,methodTwo);第一种方法的目的是淡出当前视图并隐藏它,第二种方法的目的是显示一个备用视图。无论出于何种原因点击只接受一个方法,我很积极的,它可以接受至少2以下是代码:jQuery事件中的多种方法

$(document).ready(function(){ 
    $("#slide1").hide(); 
    $(".items img").click(function() { 

     if ($(this).hasClass("active")) { return; } 

     $(".items img").removeClass("active"); 
     $(this).addClass("active"); 

     $(".slide1").click(fadeOut,showSlide1); 
     $(".slide0").click(fadeOut,showSlide0); 
    }); 

}); 


function fadeOut() { 
$(this).stop().fadeTo("medium", 0); 
$(this).hide(); 
} 

//Slide 0 has been clicked 
function showSlide0(){ 
$("#slide0").stop().fadeTo("medium", 1); 
}         

//Slide 1 has been clicked 
function showSlide1(){ 
$("#slide1").stop().fadeTo("medium", 1); 
} 
+0

“我相当肯定它可以接受至少2” - 你读过.click()文档吗?它相当肯定地不接受超过1.正如@Reigel所说,它看起来像你需要.toggle()。你究竟想要做什么? – JasCav 2010-10-08 04:52:21

回答

1

否 - .click()只接受一个函数。 (而且我很确定)

但是我们可以处理你想要做的事情。

您的代码如下简化,

$(".slide1,.slide0").click(fadeOut); 

function fadeOut() { 
$(this).stop() 
     .fadeTo("medium", 0) 
     .hide() 
     .fadeTo("medium", 1); 

} 

这使我的头划伤。 你在想什么?

或者您的寻找.toggle()

+0

效果是淡入淡出幻灯片中的新幻灯片。我会尝试你的建议,谢谢。 – nnash 2010-10-08 15:33:35

0

您遇到的一个问题是fadeOut已经是jQuery函数。因此,你会在这里发生冲突。

如果您尝试进行切换,您需要做这样的事情 - 这将在显示幻灯片和淡化它们之间切换(但是,因为它们并不总是显示,所以可能会产生问题):

$("#slide0, #slide1").toggle(showSlide, fade); 

但是......什么你正在尝试做我觉得更像是这样的:

<script> 
$(".showSlides").click(showSlides); 

$('#slide0, #slide1').hide(); 
$("#slide0, #slide1").click(fade); 

function showSlides() { 
    $('#slide0, #slide1').fadeTo("medium", 1); 
    $(this).fadeTo('medium', 0); 
} 

function fade() { 
    $(this).stop().fadeTo("medium", 0); 
}​ 
</script> 

<div class="showSlides">Show the Slides (Click Me)</div> 
<div id="slide0">Slide 0 (Click Me)</div> 
<div id="slide1">Slide 1 (Click Me)</div>​ 

这将切换显示,当你点击它们隐藏幻灯片。你可以在这里看到结果:http://jsfiddle.net/M6G5S/

+0

我没有意识到fadeOut已经是一个函数了,谢谢。 – nnash 2010-10-08 15:34:49