gpt4 book ai didi

jquery - FireFox 中的事件传播问题

转载 作者:行者123 更新时间:2023-12-01 07:31:38 25 4
gpt4 key购买 nike

我使用以下代码来防止事件传播:

function mapSlider(e) {
if ($('.slideme').hasClass('open')) {
$('.slideme').animate({left:0,},'slow').removeClass('open');
$('.opened').hide();
$('.closed').show();
} else {
$('.slideme').animate({left:-710,},'slow').addClass('open');
$('.opened').show();
$('.closed').hide();
}
return(false);

if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
e.preventDefault();
e.stopImmediatePropagation();
}

它可以在 Chrome 和 Safari 中运行,但不能在 Opera 或 Firefox 中运行(甚至还没有尝试过 IE!)。 FF firebug 说“e”未定义。我远不是一个 jquery 大师,我不明白为什么 e 是未定义的,但真的是这样吗?我认为 var e 正在定义它?

我该如何修复它?

对愚蠢的问题表示歉意 - 我是自学成才,边学边学。

MTIA

最佳答案

jQuery 统一了所有这些浏览器差异。你只需要做:

function mapSlider(e) {
if ($('.slideme').hasClass('open')) {
$('.slideme').animate({left:0,},'slow').removeClass('open');
$('.opened').hide();
$('.closed').show();
} else {
$('.slideme').animate({left:-710,},'slow').addClass('open');
$('.opened').show();
$('.closed').hide();
}
e.stopPropagation();
e.preventDefault();
}

在您的示例中,底部的代码无论如何都不会被执行,因为您之前执行了 return false;

现在它只取决于如何调用这个函数。如果您正确地将其分配为事件处理程序,则事件对象将自动传递。

更新:

在您的代码中,您没有将事件对象传递给您的处理程序。你必须这样做:

<div id="map-box" class="slideme" onClick="mapSlider(event)">

但我认为这在 IE 中不起作用。

所以用 jQuery 的方式更好:

$(function() {
$('#map-box').click(mapSlider);
});
<小时/>

jQuery documentation很不错,推荐阅读。特别是在这种情况下 the Event object .

也看看这个tutorial .

关于jquery - FireFox 中的事件传播问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com