我怎么能让hammer.js滑动事件在父元素上触发,而不是在一般的子元素上
How can I have a hammer.js swipe event fire on a parent element but not general child element?
我使用的是hammer.js 2.0
我有一个容器,需要有滑动事件。然而,该容器有一个元素,它是一个旋转木马,包含自己的滑动通风口。我怎么能让这个滑动事件在但旋转木马的任何地方触发?
var self = this,
hammerContainer = document.querySelector('section.content-wrapper'),
carousel = document.querySelector('.image-gallery-carousel'),
hammerOpts = {
threshold: 4,
velocity: .3
},
hammer = new Hammer(hammerContainer, hammerOpts);
Hammer.off(carousel, 'swipeleft swiperight', function () {
});
hammer.on('swipeleft', function (e) {
// do some other things
});
.off
方法似乎在我的旋转木马上不起作用。锤子事件仍在传播??冒泡?
它不需要只向旋转木马开火,也不需要向它可能拥有的任何孩子开火。
我发现的唯一工作方法是让jQuery参与进来。我觉得自己不是一个更好的人。
- 抓斗
event.target
- 使用jQuery的
.parents()
方法获取具有给定类名的所有目标的父对象 - 使用
if
语句检查这些父对象的长度,如果长度为0,则执行我的滑动 -
使用属性选择器检查单词carousel作为类名的所有实例和变体,例如:
[class*="carousel"]
var self = this, hammerContainer = document.querySelector('section.content-wrapper'), hammerOpts = { threshold: 4, velocity: .3 }, hammer = new Hammer(hammerContainer, hammerOpts); hammer.on('swiperight', function (e) { if (!$(e.target).parents('[class*="carousel"]').length) { //do swipey things } });
我觉得事件传播应该是我能够做的事情。比如,调用e.stopPropagation()
。
有人,任何人,请给我一个更好的方法。
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- HTML 显示/隐藏元素 JS 不起作用
- 定位 d3 上的其他元素.js事件上
- 如何获取
- 元素 js/ajax 的 Id 值
- 从元素 JS 中获取类
- 单击 html 元素 JS
- 数据未追加到车把中的元素.js
- 如何使用节点逐个获取元素.js Cheerio
- MEJS(媒体元素JS)播放功能
- 检测是否在输入元素JS中输入了特殊字符
- 如何根据下拉选择消除HTML表单中的元素?(JS吗?)
- 带有动态链接标记的可满足元素(JS、jQuery)
- 仅为UL的第一个元素(JS或jquery)添加类的样式
- 自动时间元素js
- 可以't获取API响应的特定元素[JS]
- 修改指定li元素JS的父级
- 奇异:CSS转换元素JS "点击通过"
- 通过文本框获取数组元素(JS验证)