我在编写一些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);
}
答案 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/