2010-10-08 5 views
0

J'ai de la difficulté à écrire du code jQuery. Ce que j'essaie de faire est de passer plusieurs méthodes à travers un gestionnaire d'événements comme $ (foo) .click (methodOne, methodTwo); Le but de la première méthode est de faire disparaître la vue actuelle, puis de la masquer et le but de la seconde méthode est d'afficher une autre vue. Pour une raison quelconque clic n'accepte une méthode, et je suis tout à fait positif qu'il peut accepter au moins 2. Voici le code:Plusieurs méthodes dans un événement 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

"et je suis assez positif qu'il peut accepter au moins 2" - Avez-vous lu la documentation .click()? Il accepte très positivement plus de 1. Comme @Reigel l'a dit, il semble que vous ayez besoin de .toggle(). Qu'est-ce que vous essayez de faire exactement? – JasCav

Répondre

1

Non - .click() accepter qu'une seule fonction. (Et je suis assez sûr)

Mais nous pouvons travailler sur ce que vous essayez de faire.

votre code est simplifié ci-dessous,

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

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

} 

Ce qui me donne une égratignure dans la tête. qu'est-ce que vous essayez de réaliser?

ou peut-être cherchez-vous .toggle()?

+0

L'effet est de fondre et de masquer de nouvelles diapositives dans un diaporama. Je vais essayer votre suggestion, merci. – nnash

0

Un problème que vous avez est que fadeOut est déjà une fonction jQuery. Par conséquent, vous allez avoir un conflit ici. Si vous essayez de faire une bascule, vous voudrez faire quelque chose comme ceci - cela va basculer entre montrer les diapositives et les fondre (cependant, parce qu'elles ne sont pas toujours montrées, ceci peut être problématique):

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

Mais ... ce que je pense que vous essayez de faire est plus comme ceci:

<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>​ 

cela basculera afficher et masquer vos diapositives lorsque vous cliquez dessus. Vous pouvez voir les résultats ici: http://jsfiddle.net/M6G5S/

+0

Je n'avais pas réalisé que fadeOut était déjà une fonction, merci. – nnash

Questions connexes