解决: 移动端经mouseover显示出的弹层中链接点击问题

前言

通常我们会遇到这样的需求,导航菜单在鼠标划过的时候显示自定义弹层,在弹层中有一些链接需要点击后跳转或者其他一些事件。比如:

$(".menu li").on("mouseover", function(){
  var el = $(this);
        el.find(".dropdown").show();
});
$(".menu li").on("mouseout", function(){
  var el = $(this);
        el.find(".dropdown").show();
})

在pc端中没任何问题,但是不做任何自适应处理放到移动端就会产生一些问题:

  • 原本的mouseover事件自动变成了click事件
  • dropdown中的链接只要在点击第二次的时候才会触发跳转

第一个问题是因为mouse*是鼠标事件,专门为鼠标设计的,而mouseover/out等事件则会被手指的点击所触发。所以在移动端开发的时候要尽可能抛弃传统的mouseoveer/out等事件,用Touch事件或者更高级的Gesture事件来代替。

第二个问题就有意思了,无论是通过a标签的href属性做跳转还是改为js跳转全部都要执行第二次才能触发,开始以为是css伪类把原本的事件阻止了,于是把hover样式去掉,发现问题依旧。因为项目为移动pc自适应,所以固执的想要用一套代码解决这个问题。

既然移动端能很好的响应touch事件,那就同时加上click和touchend(jquery自带),哪个生效执行哪个,试试,果然好了。

将原本的链接跳转改为js跳转:

$(".dropdown li a").on("click touchend", function(){
   // do something
})

原文地址:https://www.cnblogs.com/huoxiao/p/9812192.html

时间: 2024-10-14 23:07:56

解决: 移动端经mouseover显示出的弹层中链接点击问题的相关文章

让低版本的 Android 项目显示出 Material 风格的点击效果

欢迎各位关注我的新浪微博:http://weibo.com/kifile 转载请标明出处(http://blog.csdn.net/kifile) 每天都被不同的需求纠缠的生活是幸福而又不幸的,这不我们家亲爱的设计师们又让我们在低版本的 Android 平台上实现一下类似于 Material Design 的点击效果. 虽然大家都知道 MaterialDesign 的确好看很多,但是让我们为低版本适配也是一个苦逼的活儿. 不过还好,在使用了 nineoldandroids 这个开源库之后,总算是

12)顺序不对,修改 显示目录 的弹出对话框

1)接着之前的代码 2)直接就是添加事件处理 3)基本过程: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 然后出现一个新的函数:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 void

h5 解决ios端输入框失去焦点后页面不回弹或者底部留白问题

项目中遇到了这个问题,说实话 iOS 端问题挺多的,原因找起来比较简单,就是吊起键盘的时候把window的高度挤小了,然后, 关掉键盘页面高度没恢复,安卓手机会自动恢复页面高度. 原因找到了就想解决办法,刚开始想的是 iOS 它不恢复那我也没办法,这属于 iOS 的bug啊或者微信的 bug 啊,但领导不这么想, 页面显示出问题了当然得解决,就在google里翻,也是找到解决方法了,如下链接 微信6.7.4 ios12软键盘顶起页面后隐藏不回弹解决方案 解决方法很简单,让window滚动下就可以

7种方法解决移动端Retina屏幕1px边框问题

在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样.没有办法,只有在后面的版本中去修改了,但是要改的话,需要知道是为什么.所以查了很多资料,终于搞懂了这个问题,并且总结了几种方法. 造成边框变粗的原因 其实这个原因很简单,因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixe

鼠标悬浮标题切换显示出标题的文字和图片效果

第一种效果: HTML结构: <div class="vewinfor"> <div class="leftin_hd"> <h3>作者热文</h3> <a href="" target="_blank" class="in_more">...</a> </div> <div class="leftin_bd

[已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character &#39;\xe4&#39; in file test.py on line 3, but no encoding declared。

想在python代码中输出汉字.但是老是出现SyntaxError: Non-ASCII character '\xe4' in file test.py on line , but no encoding declared. (test.py是我自己的文件,提示错误出现在第4行, 你的文件也会得到相应的提示). 一个简单的示例test.py代码如下: 1 #!/usr/bin/python 2 3 print "你好吗" 在终端下执行python test.py指令之后, File

要求用户输入宽和高,显示出长方形的面积。

import java.util.Scanner; /** * @author 蓝色以太 * 要求用户输入宽和高,显示出长方形的面积. */ public class Area { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入长度:"); double length=sc.nextDouble(); System.out.printl

数据库建模模板、菜单显示出问题解决方案

数据库建模模板.菜单显示出问题解决方案 您使用的是哪个版本? 要查找您使用的 Visio 版本,请在"帮助"菜单上单击"关于 Microsoft Office Visio".版本的名称会显示在对话框最上面的文本行中. Standard     此版本不包含"数据库模型图"模板. Professional     此版本支持"数据库模型图"模板的反向工程功能(即在 Visio 中使用现有数据库创建模型),但是不支持正向工程功能(

使用【 ajax 】【 bootstrap 】显示出小窗口 详情内容 一些代码意思可以参考下一个文章

使用[ bootstrap ]显示出小窗口  详情内容 显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &