移动端触发onmousemoveout事件

本文介绍了一种在移动端通过监听touchstart事件来替代onmousemove事件的方法,实现了输入框关键字变化时自动触发搜索的功能。

对于input,移动端不能触发onmousemoveout进行搜索,那么可以使用监听来解决


var addHandler = function(element, type, handler){
			if (element.addEventListener){
				element.addEventListener(type, handler, false);
			} else if (element.attachEvent){
				element.attachEvent("on" + type, handler);
			} else {
				element["on" + type] = handler;
			}
		}

		var move = 'ontouchstart' in document ? 'touchstart' : 'mousemove' ;
 		addHandler(document,move,function(e){
 			var ev = 'ontouchstart' in document ? e.touches[0] : e ;
			//var x = ev.pageX ; // 这样就能在PC 和 手机上都拿到坐标值了
			//var y = ev.pageY 
			//console.log(x); 
			if( keyValue!=$("input[id='keyValue']").val() ){
 	 			keyValue =  $("input[id='keyValue']").val();
	 			type = 2;//不是同一个关键字
	 			search();
			} 
		});

代码直接拷过去就可以使用....对于监听的事件,可以自己定义:ontouchstart(按下手指),ontouchmove(移动手指),ontouchend(移走手指)都可以进行监听




在 Vue 2 中,如果需要在移动端阻止点击事件从子元素冒泡到父元素,可以通过 Vue 提供的事件修饰符 `.stop` 来实现。这个修饰符可以直接应用在子元素的 `@click` 事件上,从而阻止事件传播到父级元素[^2]。 例如,以下代码展示了如何在 Vue 2 中使用 `.stop` 修饰符来阻止点击事件冒泡: ```html <template> <div @click="handleParentClick"> <button @click.stop="handleChildClick">点击我</button> </div> </template> <script> export default { methods: { handleParentClick() { console.log('父元素的点击事件触发'); }, handleChildClick() { console.log('子元素的点击事件触发'); } } }; </script> ``` 在这个示例中,当点击按钮时,只会触发 `handleChildClick` 方法,而不会触发父元素的 `handleParentClick` 方法,因为 `.stop` 修饰符已经阻止了事件冒泡[^2]。 如果需要更复杂的事件控制,例如在某些条件下动态决定是否阻止冒泡,可以在事件处理函数中手动调用 `event.stopPropagation()` 方法[^1]。这种方式提供了更大的灵活性,但同时也需要更仔细地管理事件逻辑。 此外,在移动端开发中,除了点击事件之外,可能还需要处理其他类型的事件(如 `touchstart` 或 `touchend`)。Vue 同样支持对这些事件使用 `.stop` 修饰符来阻止事件冒泡。例如: ```html <template> <div @touchend="handleParentTouchEnd"> <div @touchend.stop="handleChildTouchEnd">滑动我</div> </div> </template> ``` 通过这种方式,可以确保在移动端操作时,事件冒泡的行为符合预期,避免不必要的副作用[^4]。 ### 阻止点击穿透事件移动端开发中,还有一种常见的问题是点击穿透事件。这种情况通常发生在用户快速连续点击屏幕上的不同元素时,尤其是在使用 `router-link` 或类似的导航组件时可能会导致多个事件触发。解决这个问题的一种常用方法是引入 `FastClick` 库,它可以消除移动端浏览器默认的 300 毫秒点击延迟,从而避免点击穿透问题[^5]。 安装 `FastClick` 的方法如下: ```bash npm install fastclick ``` 然后在项目入口文件(如 `main.js`)中引入并初始化: ```javascript import FastClick from 'fastclick'; FastClick.attach(document.body); ``` 这样可以确保在移动端点击事件能够立即响应,并减少点击穿透的可能性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值