0

我写了这段代码,对 Javascript 和 jQuery 都很陌生,所以我玩得很开心。基本上我已经缩小到单击链接时,我的 DIV 框将在点击链接之前执行 fadeOut()。我已经搜索了几天,但无法转换响应或找到有效的响应。

我试图保持代码干净并向其中添加一些 CSS,以便人们可以看到它并根据给出的答案/解决方案对其进行修改。

http://jsfiddle.net/dUTex/

//单击类“.exp”的元素

$(document).ready(function() {
$(".exp").click(function() {
    $('.expMenuWrapper').fadeIn("fast");
    $('.expMenu').fadeIn("fast");
});

//这是我被抢购的地方,我借了这个,但它不能正常工作。它在链接获得“动作”之前淡出

$(".close-btn, .expMenu").click(function(e) {
    e.preventDefault();
    $('.expMenuWrapper').fadeOut("fast");
});
});
4

2 回答 2

5

preventDefault是阻止点击的默认行为。

我建议阅读这个

因此,要淡出并点击链接,您的代码应如下所示:

$(".close-btn, .expMenu").click(
   function(e) {
      $('.expMenuWrapper').fadeOut("fast");
   });
});

如果您希望父组件不接收点击事件,请使用stopPropagation.

如果要阻止调用任何其他侦听器(即使在同一元素上),请使用stopImmediatePropagation. 所有可用的event对象

于 2013-06-07T23:59:43.960 回答
0

使用preventDefault你告诉浏览器不要做它通常做的任何事情。您正在对菜单中的所有链接执行此操作。您应该只在关闭按钮上阻止,如下所示:

$(".close-btn").click(function(e) {
    e.preventDefault();
    $('.expMenuWrapper').fadeOut("fast");
});

编辑:遵循 Matyas 的回答可能会导致一些无法预料的行为。关闭按钮是一个带有#as it's的链接href。不阻止默认会让屏幕跳转到顶部(如果你向下滚动一点,你会突然跳转到页面顶部),并且会在你的 url 中添加一个哈希。这不是很好地使用javascript。如果您有一个不是真正链接的“链接”,请使用 prevent。

于 2013-06-08T00:01:18.623 回答