- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到用户的报告,当他们点击手机的 3 行移动菜单时,菜单不会保持打开状态,只会闪烁并消失。它发生在 iOS 和 Android 手机上。
http://samiconcepts.com/xidax-home (这是有问题的网站)。
任何人都可以协助解决这个问题,我不知道如何解决:/谢谢
(function($, undefined) {
var open = [];
var opts = {
selector: '.dro
pdown ',
toggle: 'menuR1',
open: 'dropdown-open',
nest: true
};
$(document).on('click.dropdown touchstart.dropdown', function(e) {
// Close the last open dropdown if click is from outside the target dropdown
if (open.length && (!opts.nest || !open[open.length - 1].find(e.target).length)) {
open.pop().removeClass(opts.open);
}
var $this = $(e.target);
// If target is a dropdown then toggle it...
if ($this.hasClass(opts.toggle)) {
e.preventDefault();
$this = $this.closest(opts.selector);
if (!$this.hasClass(opts.open)) {
open.push($this.addClass(opts.open));
} else {
open.pop().removeClass(opts.open);
}
}
});
})(jQuery);
.dropdown {
FONT-SIZE: 12PX;
position: relative;
width: 100%;
padding: 10px;
margin-right: 10px;
text-align: right;
margin: 0 auto;
color: #a3a3a3;
letter-spacing: 1px;
font-family: 'Raleway', sans-serif;
}
.dropdown a {
display: block;
text-decoration: none;
color: #2f2f2f;
}
/* toggle */
.dropdown .dropdown-toggle {
padding: 0;
text-align: right;
margin-right: 40px;
margin-top: 20px;
}
/* dropdown */
.dropdown-menu {
position: absolute;
top: 100%;
right: 0;
left: 0;
display: none;
margin: 0;
padding: 0;
list-style-type: none;
background: #fff;
}
/* options */
.dropdown-menu .option a {
padding: 15px;
text-align: center;
font-family: 'Montserrat', sans-serif;
font-weight: 700;
border-bottom: 1px solid #e8e8e8;
text-align: center;
}
.respMenu {
display: block;
}
.header2 {
height: 65px;
width: 100%;
background-color: #000;
position: fixed;
top: 0;
z-index: 9999;
}
.dropdown-menu .option a:hover {
background-color: #02bc00;
cursor: pointer;
color: #fff;
}
/* open */
.dropdown-open {
z-index: 400;
}
.dropdown-open>.dropdown-menu {
display: block;
margin-top: -34px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="header2">
<a href="/"><img src="/images-xidax/logo-white.png" class="logoR"></a>
<div id="language" class="dropdown">
<a class="dropdown-toggle"><img src="/images-sumo/list-menu.png" class="menuR1"></a>
<ul class="dropdown-menu">
<li class="option"><a href="/">PRODUCTS</a></li>
<li class="option"><a href="/">REVIEWS</a></li>
<li class="option"><a href="/">FINANCING</a></li>
<li class="option"><a href="/">COMPANY</a></li>
<li class="option"><a href="/">CONTACT</a></li>
<li class="option"><a href="/">CART</a></li>
</ul>
</div>
</div>
最佳答案
同时在同一个元素上时,touchstart 和 click 似乎会带来问题。因此,touchstart 将触发点击,使菜单闪烁。
但是,您可以检查当前设备是否为触摸设备,并且只添加所需的事件(触摸或单击):
我在三行中修改了你的 JS:
(function($, undefined)
{
var open = [];
var opts = {
selector: '.dropdown',
toggle: 'menuR1',
open: 'dropdown-open',
nest: true
};
var clickEvent = (function() {
if ('ontouchstart' in document.documentElement === true)
return 'touchstart';
else
return 'click';
})();
var isTouchDevice = 'ontouchstart' in document.documentElement === true;
var dropdownEvent = isTouchDevice ? 'touchstart.dropdown' : 'click.dropdown';
$(document).on(dropdownEvent, function(e)
{
// Close the last open dropdown if click is from outside the target dropdown
if ( open.length && ( ! opts.nest || ! open[ open.length - 1 ].find( e.target ).length ) )
{
open.pop().removeClass( opts.open );
}
var $this = $(e.target);
// If target is a dropdown then toggle it...
if ( $this.hasClass( opts.toggle ) )
{
e.preventDefault();
$this = $this.closest( opts.selector );
if ( ! $this.hasClass( opts.open ) )
{
open.push( $this.addClass( opts.open ) );
}
else
{
open.pop().removeClass( opts.open );
}
}
});
})(jQuery);
您可以通过打开 mobile view 在 Chrome 上重现问题。 .
编辑* 我修复了从上面代码复制的语法错误。* 在 Chrome 中切换移动和桌面 View 后注意刷新浏览器,以便在初始化 JavaScript 时使用正确的事件。
关于javascript - 响应式菜单在点击时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50733077/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!