猿问

请问该如何让toggle根据div本身情况来决定运行哪个函数?为什么?

我有如下代码:
【div部分】:
<div class="tog_contact">
<div class="t_con_box">
<div class="map"><img src="images/introduction.jpg" /></div>
</div>
</div>
<div class="tog" id="tog" style="top:620px; "><span>收起,开始查询</span></div>
【jquery部分】:
$('#tog').toggle(function(){
$(this).animate({top:'0px'},320).addClass("tog").removeClass("togclose").html('<span>展开,查看详情</span>');
$('.tog_contact').slideUp(320);
},function(){
$(this).animate({top:'620px'},320).addClass("togclose").removeClass("tog").html('<span>收起,开始查询</span>');
$('.tog_contact').slideDown(320);
})
这个toggle本身是没得问题的,现在的情况是我在前边加了一个延时函数,超过3秒div#tog就会自动收起

这时候div#tog的高度已经为零了,再点击#tog的话,它还是自动执行第一个函数,而不是根据实际情况执行第二个函数。请问要怎么样改进才能让它根据情况选择运行哪个函数呢?



茅侃侃
浏览 149回答 2
2回答

潇潇雨雨

你好!不清楚你的延时函数是怎么写的?使用的是setTimeout()么?toggle是通过click事件来触发的,这样试试:$(document).ready(function(){&nbsp;&nbsp;&nbsp;&nbsp;setTimeout('$("#tog").click()',1000);&nbsp;&nbsp;&nbsp;&nbsp;$('#tog').toggle(function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({top:'0px'},320).addClass("tog").removeClass("togclose").html('<span>展开,查看详情</span>');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('.tog_contact').slideUp(320);&nbsp;&nbsp;&nbsp;&nbsp;},function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({top:'620px'},320).addClass("togclose").removeClass("tog").html('<span>收起,开始查询</span>');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('.tog_contact').slideDown(320);&nbsp;&nbsp;&nbsp;&nbsp;})});

心有法竹

$('#tog').click(function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($(this).attr('class')=='togclose'){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({top:'0px'},320).addClass("tog").removeClass("togclose").html('<span>展开,查看详情</span>');&nbsp;&nbsp;&nbsp;&nbsp;$('.tog_contact').slideUp(320);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({top:'620px'},320).addClass("togclose").removeClass("tog").html('<span>收起,开始查询</span>');&nbsp;&nbsp;&nbsp;&nbsp;$('.tog_contact').slideDown(320);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}});用toggle反而显得麻烦,不如用if判断一下。
随时随地看视频慕课网APP
我要回答