jQuery事件中的多种方法

时间:2010-10-08 04:36:27

标签: jquery events methods handlers

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

$(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);
}

2 个答案:

答案 0 :(得分:1)

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

但我们可以继续努力。

您的代码简化如下,

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

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

}

这给了我一个划痕。 你想要实现什么?

或者您正在寻找.toggle()

答案 1 :(得分:0)

您遇到的一个问题是fadeOut已经是一个jQuery函数。结果,你将在这里遇到冲突。

如果您正在尝试进行切换,则需要执行此类操作 - 这将在显示幻灯片和淡化它们之间切换(但是,因为它们并不总是显示,所以这可能会有问题):< / p>

$("#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/