0

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

3 回答 3

0

也许您应该尝试将您的“事件”变量称为参数函数。像这样的东西:

$('#showEmailHistory').click(function(event) {
    $('#emailHistory').siblings().slideUp();
    $('#emailHistory').slideToggle();
    event.stopPropagation();
});
于 2012-11-30T15:19:18.223 回答
0

我刚刚找到了答案。该页面具有重复的脚本标签,这意味着该脚本被运行了两次。感谢我的同事让这一切发生。

于 2012-11-30T15:45:50.687 回答
-1

这无需任何双重调用即可工作。http://jsfiddle.net/jazaret/C6JsH/

$('#showEmailHistory').click(function() {
    $('#emailHistory').siblings().slideUp();
    $('#emailHistory').slideToggle();
});​

当点击事件绑定到在触发的 DOM 元素之上和之上匹配的类时,通常会发生双重触发问题。如果您可以在 jsfiddle 上提供特定的 DOM 元素或子集,也许我们可以更好地识别问题?

于 2012-11-30T15:23:50.087 回答