在 Zepto 中将点击方法转换为点击方法
Converting onClick methods over to tap methods in Zepto
有没有一个简单的在移动网络应用程序上使用Zepto从点击到点击重写链接?目前,我想为每个onclick实例触发$.tap命令。
例如
<a href="#" tap="doSomething(); return false;">Link</a>
这是否可能,或者有没有办法防止 onclick 触发,但采用 onclick 方法并在 $.tap 方法中调用它?
使用Zepto制作快速按钮的任何建议?
一种更优雅的方法是将点击触发器存储在变量中,然后在处理触摸屏设备时将该变量从"click"重新映射到"touchstart"。
在这里,我使用全局对象变量 myUtils 来存储我的点击事件,该事件默认为"click"作为其值:
var myUtils = myUtils || {};
myUtils.events = myUtils.events || {
click : "click"
};
如果检测到触摸屏,那么我将我的 myUtils.events.click 属性更改为具有"touchstart"的值:
if (typeof document.body.ontouchstart !== "undefined") {
myUtils.events.click = "touchstart";
}
现在,当我将单击事件绑定到我的元素时,我使用我的 myUtils.events.click 属性作为事件名称:
$(function() {
$("#link").bind(myUtils.events.click, function(e) {
alert("I'm a " + e.type);
e.preventDefault();
});
});
这样,我只需要在我的应用程序中执行一次"它是触摸屏吗?"测试,然后我将根据需要绑定到"touchstart"或"click"。 我不必担心在移动设备上取消不需要的点击事件,因为该事件从一开始就没有绑定。
e.preventDefault(( 调用将阻止链接被跟踪(假设 #link 是 href 链接(。
JSFiddle 版本:http://jsfiddle.net/BrownieBoy/Vsakw/
请注意,此代码假定触摸屏设备只是触摸屏设备;即手机或平板电脑。 如果您使用的是触摸屏PC,那么您将无法将其与鼠标一起使用!
所以我理解你的方式是你想要在移动设备和桌面上有不同的行为,但使用相同的代码。如果是这样,那么您需要确定您所在的平台,然后定义您的代码
if(MOBILE) {
$('element').click(function(){
return false;
});
$('element').on('touchstart', function(){
// functionality of the onclick written here
});
}
else {
// desktop event listeners
}
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 将一个方法转换为promise:Nodejs
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- javascript中是否有更标准化的方法来转换(序列化)非表单数据以与ajax一起使用
- 将普通js转换为角度语法的快速方法
- 有没有一种简单的方法可以将整数转换为等效文本.即:1变为1
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 是否存在将String转换为可执行的c++表达式的方法
- 使用.join方法将数组转换为不带逗号的字符串
- 将c#get方法a转换为post方法,从javascript调用
- countBy方法转换为使用Javascript的函数
- 将 jQuery .each 方法转换为 lodash 等效项
- 在 Zepto 中将点击方法转换为点击方法
- 将方法转换为函数
- 将jQuery方法转换为字符串
- 将d3.csv方法转换为d3.csv.parse方法
- 使用Apps Script . toisostring()方法转换时髦的日期时间
- 如何将纬度和经度(从gps方法)转换为几何图形.location谷歌地图对象
- 将带有回调的方法转换为返回带有清理的承诺的方法
- AngularJS和Restangular试图将update方法转换为API