我的toggle()只有一半有效...
$('#show_hide_comments').toggle(function()
{
$('#show_hide_comments').attr('src','images/up.png');
$('.comments').fadeTo('slow', 0.01, function()
{
$(this).slideUp('slow',function()
{
});
});
}, function()
{
$('#show_hide_comments').attr('src','images/down.png');
alert('wtf');
$('.comments').slideDown('slow', function()
{
$(this).fadeTo('slow', 1, function()
{
});
});
});
隐藏.comments
的前半部分有效但下半部分根本不会发射。
HTML:
<div class="comments_container">
<div class="show_hide_comments"><img id="show_hide_comments" src="images/down.png" width="19" height="10" alt="Expand" />
<div class="comments">
<div class="new_comment_container">
<div class="new_comment"><input id="comment" name="comment" type="text" value="your comment here..."></div>
<div class="author"><input id="name" name="name" type="text" value="your name"></div>
<div class="email"><input id="email" "name="email" type="text" value="your email"></div>
<div class="comment_check"><input id="comment_check" type="image" src="images/uncheck.png" HEIGHT="16" WIDTH="16" BORDER="0" ALT="Submit Comment!" DISABLED></div>
</div>
<div class="captcha">
<div class="captcha_statment">Mostly Dirty, Always:</div><div class="captcha_response"><input id="captcha_response" name="captcha_response" type="text" value="" size="5" maxlength="5"></div>
<div class="captcha_check"><input id="captcha_check" type="image" src="images/check.png" HEIGHT="16" WIDTH="16" BORDER="0" ALT="Submit Captcha!"></div>
<div class="captcha_result"></div>
</div>
<div class="the_comments">
<?php
$query = mysql_query("SELECT * FROM comments WHERE approved = 1 LIMIT 3");
while($comments = mysql_fetch_array($query))
{
$date = date( 'F jS', strtotime($comments['date']));
echo '<div class="comment" id="'.$comments[id].'">'.$date.' - '.$comments[comment].' - '.$comments[name].'</div>';
}
?>
<div class="full_comments_toggle"><img id="full_comments_toggle" src="images/up.png" width="19" height="10" alt="Expand" />
<?
$query = mysql_query("SELECT * FROM comments WHERE approved = 1 LIMIT 3,10000");
$count = mysql_num_rows($query);
echo 'Show '. $count . ' more comments.';
?>
</div>
<div class="full_comments">
<?php
while($comments = mysql_fetch_array($query))
{
$date = date( 'F jS', strtotime($comments['date']));
echo '<div class="comment" id="'.$comments[id].'">'.$date.' - '.$comments[comment].' - '.$comments[name].'</div>';
}
?>
</div>
</div>
</div>
</div>
</div>
因为JQuery似乎没问题......什么样的事情会导致toggle()
中途休息?
答案 0 :(得分:0)
似乎对我来说很好。页面上还有其他可能与js冲突的内容吗?
答案 1 :(得分:0)
我实际上没有尝试过您的代码,但有一件事我注意到您将$comments[id]
用作“id”和“完整”注释的DOM ID。这可以以微妙的方式破坏DOM操作(除了无效之外)。
我建议您更改列出完整评论的部分,如下所示:
echo '<div class="comment" id="full_'.$comments[id].'">'.$date.' - '.$comments[comment].' - '.$comments[name].'</div>';
更新: 我尝试了你的代码,它在FF 3.6.6和IE 8中都有效(点击 - &gt; fadeout,点击 - &gt;'wtf',fadein)。我认为错误发生在其他地方。