0

jQueryコードを書くのに苦労しています。私がやろうとしているのは、$(foo).click(methodOne、methodTwo);のようなイベントハンドラーを介して複数のメソッドを渡すことです。最初の方法の目的は、現在のビューをフェードアウトしてから非表示にすることであり、2番目の方法の目的は、別のビューを表示することです。何らかの理由で、クリックは1つのメソッドのみを受け入れており、少なくとも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);
}
4

2 に答える 2

1

いいえ.click()-1つの関数のみを受け入れます。(そして私はかなり確信しています)

しかし、私たちはあなたがやろうとしていることに取り組むことができます。

コードは以下のように簡略化されています。

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

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

}

それは私に頭の傷を与えます。何を達成しようとしていますか?

または多分あなたが探してい.toggle()ますか?

于 2010-10-08T04:44:36.937 に答える
0

あなたが抱えている問題の1つは、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/

于 2010-10-08T05:12:04.883 に答える