gpt4 book ai didi

javascript - jQuery Dropdown .slideUp/Down 适用于 Chrome,错误适用于 Firefox

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:41 26 4
gpt4 key购买 nike

首先,我现在开始学习javascript,所以我知道我的代码很垃圾

但它在 Chrome 上对我有用!只有当我试图在 Firefox 上查看它时,它才被窃听

fiddle :jsfiddle.net/7NCcY/

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
/* Dropdown Webmail */
$('.button-webmail').click(function() {
if($('.toggle-webmail').is(':visible')) {
$('.toggle-webmail').slideUp(200);
}
else {
$('.toggle-webmail').slideDown(200);
$('.toggle-client-area').slideUp(200);
$('.toggle-all-products').slideUp(200);
$('.toggle-countries').slideUp(200);
}
});
/* Dropdown Client Area */
$('.button-client-area').click(function() {
if($('.toggle-client-area').is(':visible')) {
$('.toggle-client-area').slideUp(200);
}
else {
$('.toggle-client-area').slideDown(200);
$('.toggle-webmail').slideUp(200);
$('.toggle-all-products').slideUp(200);
$('.toggle-products').slideUp(200);
}
});
/* Dropdown All Products */
$('.button-all-products').click(function() {
if($('.toggle-all-products').is(':visible')) {
$('.toggle-all-products').slideUp(200);
}
else {
$('.toggle-all-products').slideDown(200);
$('.toggle-webmail').slideUp(200);
$('.toggle-client-area').slideUp(200);
$('.toggle-countries').slideUp(200);
}
});
/* Dropdown Countries */
$('.button-countries').click(function() {
if($('.toggle-countries').is(':visible')) {
$('.toggle-countries').slideUp(200);
}
else {
$('.toggle-countries').slideDown(200);
$('.toggle-webmail').slideUp(200);
$('.toggle-client-area').slideUp(200);
$('.toggle-all-products').slideUp(200);
}
});
$('html').click(function() {
$('.toggle-webmail, .toggle-client-area, .toggle-all-products, .toggle-countries').slideUp(200);
});
$('.toggle-webmail, .toggle-client-area, .toggle-all-products, .toggle-countries').click(function(event){
event.stopPropagation();
});
});
</script>
<style>
.container {
width:100%;
}
.column1, .column2, .column3, .column4 {
width:20%;
margin-right:5%;
float:left;
}
.toggle-webmail, .toggle-client-area, .toggle-all-products, .toggle-countries {
display:none;
}
</style>
</head>
<body>
<h1>Click to dropdown</h1>
<h2>Works on Chrome. Bugs on Firefox</h2>
<div class="container">
<div class="column1">
<div class="button-webmail">Webmail</div>
<div class="toggle-webmail"><input type="text"></input></div>
</div>
<div class="column2">
<div class="button-client-area">Client Area</div>
<div class="toggle-client-area"><input type="text"></input></div>
</div>
<div class="column3">
<div class="button-all-products">All Products</div>
<div class="toggle-all-products"><input type="text"></input></div>
</div>
<div class="column4">
<div class="button-countries">Countries</div>
<div class="toggle-countries"><input type="text"></input></div>
</div>
</div>
</body>
</html>

最佳答案

经常检查你的控制台!

主要问题是 Chrome 和 Firefox 处理 event.stopPropagation() 的方式。作为提示,当您调试 JQuery 时,您应该始终做的第一件事就是检查控制台。在你的 JSFiddle 中,当你在 Firefox 上点击一个按钮时,你会发现控制台输出

ReferenceError: 事件未定义

event.stopPropogation() 阻止您的点击触发 $('html') 的 onclick 处理程序。由于 Firefox 无法调用该方法,您的点击会冒泡到 $('html') 的 onclick 处理程序,最终会在向下滑动时立即关闭下拉列表。

要解决此问题,您需要将 event 参数添加到您的点击处理程序中。例如:

$('.button-webmail').click(function(event) {

/* handle click */

event.stopPropagation();
}

JSFiddle Here

碰巧 Chrome 在没有这个事件参数的情况下也能正常工作。希望这能解决问题!

此外,正如@sheriffderek 指出的那样,可以通过多种方式清理此代码。你绝对应该研究他的想法!

关于javascript - jQuery Dropdown .slideUp/Down 适用于 Chrome,错误适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134565/

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