如何使用jQuery Mobile的触摸事件支持(没有UI增强)?
我正在开发一个有自己的外观和感觉的networking应用程序。 我只想使用jQuery Mobile来支持触摸事件。
当我链接jquery.mobile.min.js(没有链接的CSS),那么我的页面的布局被打破。
我如何configuration(初始化)jQuery Mobile只使用触摸事件支持? 我是否会绑定jQuery文档就绪钩子中的事件,因为我没有任何与JQM页面相关的事件?
编辑
在jsfiddle中看到这个例子: http : //jsfiddle.net/redhotsly/JGgrw/ 。 html包含一个<button>
但jQuery Mobile在其左侧创build了一个<span>
。 如果你检查结果标记(F12),你会看到,jQuery Mobile也添加了一个CSS类到我的button。
编辑:
我需要一个解决scheme,我不会修改JQM脚本。 我需要使用CDN的官方脚本。
如果你只是想绑定到触摸/手势事件,我会使用jGestures来代替:
http://jgestures.codeplex.com/
很好的jquery插件,我曾经在项目中使用过大量的事件绑定到:
可用事件:
orientationchange设备顺时针或逆时针旋转。 该事件由设备触发,可能使用内部陀螺仪。
捏(pinch)在捏手势期间被触发(两个手指彼此远离或朝向彼此)。
旋转在旋转手势期间被触发(两个手指顺时针或逆时针旋转)。
swipemove在滑动手势(手指正在设备周围移动,例如拖动)时被触发。
swipeone在用一个接触点轻扫移动手势后触发(一个手指在设备周围移动)
swipetwo在两个接触点(两个手指在设备周围移动)的滑动手势后触发,
swipethree在具有三个接触点的滑动手势之后触发(三个手指在设备周围移动)
swipefour在四个触点 (四个手指在设备周围移动)的滑动手势后触发,
滑动在严格的向上滑动移动手势之后触发
swiperightup在向右和向上轻扫移动手势之后触发
swiperight在严格的向右滑动移动手势之后触发
swiperightdown在钻机*向下和向下滑动移动手势之后触发
swipedown在严格的向下滑动移动手势后触发
swipeleftdown在向左和向下滑动移动手势后触发
swipeleft在严格的向左滑动移动手势之后触发
swipeleftup在向左和向上滑动移动手势后触发
tapone在单一(一个手指)轻拍手势后触发
taptwo双击(双指)轻敲手势后触发
tapthree在三脚(三指)轻敲手势后触发
pinchopen当一个pinchopen手势(两个手指相互离开)发生,并且接触点(手指)被移除了设备时触发。
pinchclose当一个捏手势(两个手指朝着对方移动)发生并且接触点(手指)被移除设备时触发。
rotatecw当顺时针旋转手势(两根手指顺时针旋转)发生并且接触点(手指)移开设备时触发。
rotateccw当逆时针旋转手势(逆时针旋转两个手指)发生并且触点 (手指)从设备上移除时触发。
如果您只想将jQuery mobile用于触摸事件,请在加载jQuery移动库之前添加以下脚本:
<script type="text/javascript">$(document).bind("mobileinit", function(){$.extend( $.mobile , {autoInitializePage: false})});</script>
这可以防止jquery mobile初始化页面并触摸DOM,从而使您的布局独立。
jQuery Mobile现在有一个Download Builder,可以让你只select你想要的部分,在这种情况下,你只需要selectEvent部分下的Touchcheckbox。
jQM现在是分离的:
小工具:现在已经脱离了灵活的构build
我们已经想长时间将所有的小部件从页面插件中分离出来,我们很高兴地宣布我们终于实现了这一转变。 那么究竟是什么意思呢? 那么,个别小部件和实用程序总是被分解成单独的脚本文件。 但是,页面插件负责处理在创build页面时在标记中find的所有官方插件的自动初始化。 这种情况下,不可能删除你不需要的插件而不会造成错误,而且通常为未来的widget添加设置一个不好的先例。
现在,几乎所有jQuery Mobile库中的UI小部件都是完全分离的,所以如果不需要某个特定的项目,就可以简单地将其删除。 除了less数必需的核心文件之外,此更改还使您可以显着缩小库的大小,只需包含所需的特定小组件或function集即可。 虽然我们仍然计划进行更多的解耦和清理,但在执行自定义生成之前,现在可以将以下文件解耦并可以安全地从make文件中删除:
- 页眉/内容/页脚
- 可折叠
- 控制组
- fieldcontain
- fixheaderfooter
- 按键
- checkboxradio
- select
- 滑块
- 的TextInput
- 链接主题
- 列表显示
- 导航栏
- 格
我们将在依赖关系图上工作,因为一些小部件依靠其他部件来工作。 例如,button标记插件是由上面的许多小部件调用的,所以它只能被排除,但是如果你没有使用任何依赖于button的小部件。
我们仍在制定我们对插件依赖关系进行映射的build议,并进一步解耦。 最终,这将在下载构build工具中出现,敬请期待!
你可以前往他们的GIT回购,只需下载你想要的:
如果有人遇到这种情况(不需要closuresjQuery的CDN文件),下面是我提取JQM事件触发器的步骤:
-
git clone git@github.com:jquery/jquery-mobile
-
cd jquery-mobile
- 在你最喜欢的编辑器中编辑
js/jquery.mobile.js
- replace
define(...);
语句define(['./events/touch', './events/orientationchange']);
-
make
- 您的仅限事件JQM现在处于
compiled/jquery.mobile.js
和compiled/jquery.mobile.min.js
现在你可以使用$(el).tap(fn)
之类的而不用担心JQM劫持你的标记!
另一个新的select是jQuery的移动事件 ,我一直在这个问题的斗争,只发现这个插件有用。
从jQuery Mobile的下载生成器定制构build不适合我。 jGestures没有我需要的taphold
事件。
在初始阶段处理这个特殊的问题几乎是不可能的,你最好的办法就是在UI元素上使用data-role =“none”,你不想让默认的样式发生:
<button type="button" data-role="none">Click Me!</button>
- jQuery DataTables分页大小
- 在knockout.js完成渲染所有元素后成功callback
- stopPropagation与stopImmediatePropagation
- 用jQueryanimationaddClass / removeClass
- 不显眼的客户端validation使用fluentvalidation和asp.net mvc LessThanOrEqualTo不发射
- 如何通过jQuery中的href获取元素?
- 提交之前添加POST参数
- 如何使用ASP.NET MVC 3和Stackoverflow的Markdown
- 为什么要y.innerHTML = x.innerHTML; 被避免?