下面有一个简单的函数,它在单击元素时隐藏或显示DIV。但是,它只需一次鼠标点击即可运行两次。我已经使用firebug在几个断点处停止代码,当最后一个函数(slideToggle)完成时,它返回到click函数的开始并再次重复。这意味着要显示的元素仍然是隐藏的,因为它会再次隐藏在slideToggle上。
$('#showEmailHistory').click(function() {
$('#emailHistory').siblings().slideUp();
$('#emailHistory').slideToggle();
event.stopPropagation();
});
我已经放置了一个event.stopPropagation();作为解决这个问题的临时措施。但我真正想知道的是什么导致它重新运行?没有其他事件链接到元素#showEmailHistory。
链接到点击的元素是一个简单的div。
<div id="showEmailHistory" class="button">Show Email History</div>
我要展示的元素是一个简单的div。
<div id="emailHistory">
Content
</div>
答案 0 :(得分:0)
也许你应该尝试将你的“event”变量称为param函数。像这样:
$('#showEmailHistory').click(function(event) {
$('#emailHistory').siblings().slideUp();
$('#emailHistory').slideToggle();
event.stopPropagation();
});
答案 1 :(得分:0)
我刚刚找到答案。该页面包含重复的脚本标记,这意味着该脚本正在运行两次。感谢我的同事让这种情况发生。
答案 2 :(得分:-1)
这没有任何双重调用。 http://jsfiddle.net/jazaret/C6JsH/
$('#showEmailHistory').click(function() {
$('#emailHistory').siblings().slideUp();
$('#emailHistory').slideToggle();
});
当双击事件与在触发的DOM元素之上和之上匹配的类相关联时,通常会发生双重问题。如果您可以在jsfiddle上提供特定的DOM元素或子集,我们可以更好地识别问题吗?