我不能在此处显示实例,但我看不到slideToggle如何被调用两次。它被点击链接调用。slideToggle在一次调用中执行两次
这里:
// initialize the jquery code
$(function(){
$('div.slideToggle a').click(function(){
$(this).parent().siblings('div.remaining-comments').slideToggle('slow',function(){ //'this' becomes the remaining-comments.
var hidden = $(this).siblings('div.slideToggle').find('input').val();
if($(this).siblings('div.slideToggle').find('a').html().substr(0,4) == 'Show'){
$(this).siblings('div.slideToggle').find('a').html('Hide comments');
}
else {
$(this).siblings('div.slideToggle').find('a').html(hidden);
}
});
});
});
它是为了显示和隐藏一个博客页面上额外的评论。然而,它是显示然后隐藏在一个点击。我已经在'if'和'else'中都发出警告,并且都出现了,那么它是如何被调用两次的呢?
显然,当链接包含文本'显示'它显示隐藏的div,并且当再次点击时它不会找到'显示',因此会隐藏div。有趣的是,它的运行非常完美。它在公司内联网上,所以我想也许别的东西可能会影响它,但我真的不知道如何。
这不是最好的解决办法...对待这个问题不症状,如果它正在运行两次,*为什么*?没有理由两次运行所有'ready'处理程序代码,这是非常低效的。另外如果其他'click'处理程序绑定到该元素? – 2010-09-30 10:59:16
我认为它必须与.ready被多次调用。我们的页面是大量不同代码片段的混合。所以可重用的函数被放在单独调用.ready中。取消绑定为我做了窍门,谢谢。 – 2010-09-30 11:07:06
我知道尼克,但我不知道为什么他的准备好声明是两次运行,所以我不能暗示可能的解决方案。 allthough我应该补充说,这是一个解决方法,而不是本身的修复。 – Sander 2010-10-06 10:01:56