我有一個列表視圖中的項目列表。點擊一個li發送一個JSON請求並打開一個描述頁面。防止列表視圖上的更多點擊事件(一次點擊)
由於描述頁面打開需要1或2秒,所以有時間點擊列表中的另一個項目,然後觸發更多的事件,這是我不想要的。這最終會使滾動(使用iscrollview)在返回列表時滾動底部條上下移動。
如何在處理打開說明頁面時停止在列表視圖上輕敲更多按鈕?
我有一個列表視圖中的項目列表。點擊一個li發送一個JSON請求並打開一個描述頁面。防止列表視圖上的更多點擊事件(一次點擊)
由於描述頁面打開需要1或2秒,所以有時間點擊列表中的另一個項目,然後觸發更多的事件,這是我不想要的。這最終會使滾動(使用iscrollview)在返回列表時滾動底部條上下移動。
如何在處理打開說明頁面時停止在列表視圖上輕敲更多按鈕?
沒有任何可以看的,我們很難幫助你。
但是,避免這種情況的最簡單方法是使用全局變量作爲標誌。
您將設置全局變量(即:在你的JavaScript文件的根級別),爲假:
tapProcessing = false;
然後,每當你開始處理你,覈對該標誌和 - 如果不是真的,然後處理。
這裏有一個基本的例子來向你展示我的意思:
$('.selector').click(function(e){
if(!tapProcessing){
//the function is not processing, therefore set the flag to true:
tapProcessing = true;
//do your load/etc, and reset the flag to false in the callback (when finished):
$.get("test.php", function(data) {
// process your data here
// set your flag back to false:
tapProcessing = false;
});
}else{
//the function is already being processed from a previous click
}
e.preventDefault(); //assuming it's a link
});
非常棒!謝謝你。 –
下面是我添加的代碼位:
EL是我的名單,事件是着陸頁 設置tapProcessing爲假應該只在「changePage()請求完成將頁面加載到DOM並且所有頁面轉換動畫已經完成」之後完成「(JQM doc:http://jquerymobile.com/demos/1.2.0/docs/api/events.html)
$('#el').click(function(e){
if(tapProcessing) {
alert('prevent');
e.preventDefault(); //assuming it's a link
} else {
alert('oktap');
tapProcessing = true;
}
});
$(document).bind("pagechange", function(event, options) {
if(options['toPage']['selector'] == '#event') {
tapProcessing = false;
}
});
如果我收到斷開事件或超時,我也將tapProcessing設置爲false。
您可以禁用任何點擊任何列表視圖項目,並啓用它們時,Ajax請求完成。 – Omar