是否有一個簡單的方法來重新編寫onclick移動web應用程序中的鏈接以便使用Zepto進行點擊?目前我想爲每個onclick實例觸發$ .tap命令。將onClick方法轉換爲Zepto中的點擊方法
例如
<a href="#" tap="doSomething(); return false;">Link</a>
這是可能的,或者是有沒有辦法阻止的onclick燒製而成,但採取的onclick方法,並把它叫做$ .tap方法裏面?
使用Zepto製作快速按鈕的任何建議?
是否有一個簡單的方法來重新編寫onclick移動web應用程序中的鏈接以便使用Zepto進行點擊?目前我想爲每個onclick實例觸發$ .tap命令。將onClick方法轉換爲Zepto中的點擊方法
例如
<a href="#" tap="doSomething(); return false;">Link</a>
這是可能的,或者是有沒有辦法阻止的onclick燒製而成,但採取的onclick方法,並把它叫做$ .tap方法裏面?
使用Zepto製作快速按鈕的任何建議?
好吧,所以我理解你的方式是你想在移動和桌面上的不同行爲,但使用相同的代碼。如果是這樣,那麼你需要確定你是在哪個平臺,然後確定你的代碼
if(MOBILE) {
$('element').click(function(){
return false;
});
$('element').on('touchstart', function(){
// functionality of the onclick written here
});
}
else {
// desktop event listeners
}
更優雅的方式將您的點擊觸發存儲在一個變量,然後從重新映射變量「點擊」到「touchstart」當你在處理觸摸屏設備時。
在這裏,我用一個全局對象變量,myUtils,存儲我的點擊事件,默認爲「點擊」作爲它的值:
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上,那麼你將無法使用鼠標!
JSFiddle Spike +1。 – Shahul3D
類似當你點擊.trigger('onclick') – Huangism
是的 - 但你怎麼能防止onclick點擊時發射? – gregavola
你的意思是有沒有辦法阻止它進入鏈接?或者是否有某個你不想觸發的onclick函數? – Huangism