以下jQuery代码有什么问题?
<script type="text/javascript">
$("#contact_min").click(function(){
$("#contact_min").toggle(function(){
$("#contact_min").animate({
height: "300px"
}, 1500 );
$(".arrow").html("▼")}
function(){
$("#contact_min").animate({height: "28px"}, 1500 );
$(".arrow").html("▲")
})});
</script>
当我点击contact_min div时,它什么也没做。
HTML:
<div id="contact_min">
<span class="arrow">▲</span>
<span class="text">foobar</span>
</div>
答案 0 :(得分:5)
它什么都不做。它绑定了另一个事件来处理点击。当你再次点击它时你会看到发生的事情,但它会绑定另一个事件。之后,每次点击都会有多个处理程序执行相反的操作,每次点击都会绑定更多的处理程序。
只需删除click
方法调用,toggle
方法会为点击事件绑定一个事件:
<script type="text/javascript">
$("#contact_min").toggle(function(){
$("#contact_min").animate({
height: "300px"
}, 1500 );
$(".arrow").html("▼")
},
function(){
$("#contact_min").animate({
height: "28px"
}, 1500 );
$(".arrow").html("▲")
});
</script>
答案 1 :(得分:1)
没有.toggle动画我觉得你需要做类似的事情:
$("#contact_min").click(function(){
var height = $("#contact_min").attr("height");
if height!=28px
{
$("#contact_min").animate({
height: "28px"
}, 1500 );
$(".arrow").html("▲");
}
else
{
$("#contact_min").animate({
height: "300px"
}, 1500);
$(".arrow").html("▼")
});
答案 2 :(得分:0)
删除点击功能,因为切换已经有一个互换点击事件。
所以它会是:
<script type="text/javascript">
$("#contact_min").toggle(function(){
$("#contact_min").animate({
height: "300px"
}, 1500 );
$(".arrow").html("▼")
}
function(){
$("#contact_min").animate({
height: "28px"
}, 1500 );
$(".arrow").html("▲")
});
</script>