2013-01-10 91 views
0

以下jQuery代码有什么问题?jQuery切换和动画不起作用

<script type="text/javascript"> 
    $("#contact_min").click(function(){ 
    $("#contact_min").toggle(function(){ 
     $("#contact_min").animate({ 
     height: "300px" 
     }, 1500); 
    $(".arrow").html("&#x25bc;")} 
    function(){ 
     $("#contact_min").animate({height: "28px"}, 1500); 
     $(".arrow").html("&#x25B2;") 
    })}); 
</script> 

当我点击contact_min div时,它什么都不做。

HTML:

<div id="contact_min"> 
    <span class="arrow">&#x25B2;</span> 
    <span class="text">foobar</span> 
</div> 
+0

请发表您的HTML – Swarne27

+0

嘿,我建议你看看[jQuery的文档(http://docs.jquery.com/),一切都在说明那里。 –

+1

不需要那 – Vogel612

回答

5

它不会做任何事。它绑定了另一个事件来处理点击。当你再次点击它时,你会看到一些事情发生,但它会绑定另一个事件。之后,每次点击都会有多个处理程序执行相反的操作,每次点击都会绑定更多的处理程序。

只需卸下click方法调用,toggle方法结合的点击事件:

<script type="text/javascript"> 
$("#contact_min").toggle(function(){ 
    $("#contact_min").animate({ 
    height: "300px" 
    }, 1500); 
    $(".arrow").html("&#x25bc;") 
}, 
function(){ 
    $("#contact_min").animate({ 
    height: "28px" 
    }, 1500); 
    $(".arrow").html("&#x25B2;") 
}); 
</script> 
+0

不存在逗号之间缺失的逗号这两个功能呢? – Aioros

+0

谢谢,我没有点击已经自己尝试过,但添加逗号做了把戏:) – AgeDeO

+0

@Aioros:是的,你说得对,应该有一个逗号。我将它添加到代码中。 – Guffa

1

没有.toggle有生我认为你需要做的是这样的:

$("#contact_min").click(function(){ 
    var height = $("#contact_min").attr("height"); 
    if height!=28px 
    { 
    $("#contact_min").animate({ 
    height: "28px" 
    }, 1500); 
    $(".arrow").html("&#x25B2;"); 
    } 
    else 
    { 
    $("#contact_min").animate({ 
    height: "300px" 
    }, 1500); 
    $(".arrow").html("&#x25bc;") 
}); 
0

删除点击功能,因为切换已经有交换点击事件。

因此,这将是:

<script type="text/javascript"> 
$("#contact_min").toggle(function(){ 
$("#contact_min").animate({ 
height: "300px" 
}, 1500); 
$(".arrow").html("&#x25bc;") 
} 
function(){ 
$("#contact_min").animate({ 
height: "28px" 
}, 1500); 
$(".arrow").html("&#x25B2;") 
}); 
</script>