Jquery单击函数返回开始

时间:2012-11-30 15:11:22

标签: jquery

下面有一个简单的函数,它在单击元素时隐藏或显示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>

3 个答案:

答案 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元素或子集,我们可以更好地识别问题吗?