我有这段代码:
$('.selector').on({
touchstart: function (e) {
e.preventDefault();
alert(3);
e.stopPropagation();
},
tap: function (e) {
e.preventDefault();
alert(4);
e.stopPropagation();
}
});
仅触发touchstart。任何人都可以解释原因吗?
P.S。 :这是我为jQuery mobile包含脚本的方法:
<script src="http://code.jquery.com/mobile/1.4.4/jquery.mobile-1.4.4.min.js"></script>
编辑: 我想在我的一个div上引入一个悬停功能,我认为使用tap事件就像点击一样,并使用touchstart像悬停一样。
$('.selector').on('tap swipe', function (e) {
e.preventDefault();
if(e.type == 'swipe') {
alert(1);
}
if(e.type == 'tap') {
alert(2);
}
e.stopPropagation();
});
$('.selector .sel1').on('tap swipe', function (e) {
e.preventDefault();
if(e.type == 'swipe') {
alert(3);
}
if(e.type == 'tap') {
alert(4);
}
e.stopPropagation();
});
使用此代码,我的div上的滑动事件可以正常工作,但对于内部元素,我无法重现滑动事件,只有触发才会触发。我真的无法弄清楚原因。
答案 0 :(得分:0)
使用这样的语法:
$('.selector').on("touchstart tap", function(e){
e.preventDefault();
if(e.type == "touchstart"){
alert(3);
}
if(e.type == "tap"){
alert(4);
}
e.stopPropagation();
});
答案 1 :(得分:0)
Touchstart似乎不再作为jQuery Mobile ver中的本机事件提供。 1.4.5也许你可以使用&#34; tap&#34;和&#34;刷卡&#34; (或&#34; swipeleft&#34; /&#34; swiperight&#34;)实现目标?它并不完全清楚你在创造什么。
注意:您可以做的一件事是轻松自定义本机jQuery Mobile功能以进行滑动。详见http://api.jquerymobile.com/swipe/
在进行.on(&#34;滑动&#34; ...)绑定之前,您可以更改jQuery滑动使用的测试值。它就像
一样简单$.event.special.swipe.horizontalDistanceThreshold = 100; // in lieu of 30px
您可以通过警报或console.log()验证数据设置。也许这对你有用吗?嗯..通过处理垂直距离阈值,你本质上可以暂时定义&#34;刷卡&#34;作为一个&#34;向上滑动&#34;,你可以使用swipeleft,swiperight和swipeup进行游戏。