2011-10-06 63 views
3

我不确定这是否是一个“回调”,我需要或不是,但基本上我试图仿效.click的.hover()效果函数的逆转()效果,这是可能的,所以基本上,如果用户再次点击链接,刚刚发生的反向,即div关闭而不是打开,会发生。是否可以使用.click() ?jQuery切换.click()函数

$(document).ready(function(){ 
    $('.content_accrd').css({"height":"0px"}); 
$('.paneltop').click(function() { 
    $(this).css({"background-position":"0px -21px"}) 
    .siblings().animate({"height":"100px"}, 200) 
}, function() { 
$(this).css({"background-position":"0px 0px"}) 
    .siblings().animate({"height":"0px"}, 200); 

}) 
}) 

回答

5

使用.toggle(),不.click()

说明:将两个或多个处理程序绑定到匹配的元素,以便在其他点击上执行。

+0

还有,就是在技术上我想要的东西?回调?还是被称为别的东西? –

+0

我不认为“回调”是你想要的。回调(无论如何都是JavaScript)是一个稍后要执行的功能。代码中的3个匿名函数都是回调的例子。第一个是在DOM准备就绪时执行的回调。 –

+0

关于JS回调的简要介绍:http://recurial.com/programming/understanding-callback-functions-in-javascript/([Wikipedia article]](http://en.wikipedia.org/wiki/Callback_ %28computer_programming%29)可能有点不透明...) –

0

不,点击动作总是会做同样的事情。如果你想要它有交替效果,你将不得不检查元素的当前状态,并相应地切换到新的状态。

这看起来是这样的:

$('#foo').click(function() { 
    if ($('#foo').is(':visible')) { 
     $('#foo').hide(); 
    } else { 
     $('#foo').show(); 
    } 
    }); 

取决于你正在努力实现这可能是你想要的任何变化的影响。

+0

1.你在哪里看到ID为“foo”的元素? 2.为什么你会用这个而不是['.toggle()'](http://api.jquery.com/toggle/)? -1。 –

+0

1.只是一个可以应用于任何元素的演示。 2.是的,阅读OP的问题,他们特别要求能够扭转行动(类似于鼠标悬停效果)。这可能不一定是显示/隐藏切换,而是任何类型的切换。可能由我们需要跟踪元素当前状态的多个触发元素引起。 – njr101

+0

如果页面上有多个元素可能导致状态更改,则切换将不起作用。唯一确定的方法是查询当前状态并切换到相反的状态。对不起,你觉得这是不正确的,值得downvote。但是每个人都有权获得他们的意见。 – njr101

1

尝试切换

$(".paneltop").toggle(function(){ 
    //first click happened 
},function(){ 
    //second click happened 
}); 
+0

有人可以解释他/她downvote所以我可以改善我的答案? – genesis

+0

这将是我的downvote - 对不起,我要评论,但受到了侧面影响。我低估了你的原始答案,因为这显然是错误的。你为什么不编辑它?无论如何,在我已经发布(并且低估你的错误答案)之后,它与我的答案相同。 –

+0

@MattBall:我已经删除了它,因为它很久以前就被downvoted了,而获得upvoted的机会非常小。 – genesis