Несколько методов в событии jQuery - PullRequest
0 голосов
/ 08 октября 2010

У меня возникли трудности с написанием кода jQuery.То, что я пытаюсь сделать, это передать несколько методов через обработчик событий, например, $ (foo) .click (methodOne, methodTwo);Назначение первого метода состоит в том, чтобы скрыть текущий вид, а затем скрыть его, а целью второго способа является отображение альтернативного представления.По любой причине клик принимает только один метод, и я уверен, что он может принять как минимум 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 ]

1 голос
/ 08 октября 2010

Нет - .click() принимает только одну функцию.(И я почти уверен)

Но мы можем работать над тем, что вы пытаетесь сделать.

ваш код упрощен ниже,

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

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

}

Что даету меня царапина в голове. что вы пытаетесь достичь ??

или, может быть, вы ищете .toggle()?

0 голосов
/ 08 октября 2010

Одна проблема, с которой вы столкнулись, заключается в том, что 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/

...