2014-02-22 82 views
3

我在頭文件中正確包含了<script src="hammer.js"></script><script src="../jquery.hammer.js-master/jquery.hammer.js"></script>觸摸事件不使用jQuery插件觸發AJAX - Hammer.js

我有一個AJAX事件是由點擊鼠標(動態和依賴菜單)觸發的。無論點擊哪個第一個菜單都會確定下一個菜單的內容。這在桌面和筆記本電腦上運行良好,但不在移動設備上運行。您必須在AJAX加載下一個菜單之前點擊兩次菜單。

HTML代碼:

<label> Choose a Menu:</label> 
<select id="menu" name="menu" class="menu"> 
<option class = 'option' value = '1'>Whatsapp</option> 
<option class = 'option' value = '2'>19Billion USD</option> 
<option class = 'option' value = '3'>Facebook</option> 
</select> 
<p id = 'news'> </p> 

jQuery的AJAX:

$("#menu").click(function() 
{ 
    var menuId = $(this).val(); 
    var request = $.ajax({ 
     url: "news.php", 
     type: "POST", 
     data: { id : menuId }, 
     dataType: "html" 
    }); 

    request.done(function(msg) { 
     $("#news").html(msg); 
    }); 
}); 

Hammer.js代碼:

var element = document.getElementById('menu'); 
var hammertime = Hammer(element).on("tap", function(event) { 
var menuId = $('#menu').val(); 
var request = $.ajax({ 
    url: "news.php", 
    type: "POST", 
    data: { id : menuId }, 
    dataType: "html" 
}); 

request.done(function(msg) { 
    $("#news").html(msg); 
}); 
}); 

謝謝你,在提前。

回答

0

後來我解決了這個問題,甚至沒有使用Hammer.js。我只是將.click()更改爲.change(),並且一切正常。

這裏是工作代碼:

$("#menu").change(function() 
{ 
var menuId = $(this).val(); 
var request = $.ajax({ 
    url: "news.php", 
    type: "POST", 
    data: { id : menuId }, 
    dataType: "html" 
}); 

request.done(function(msg) { 
    $("#news").html(msg); 
}); 
}); 

謝謝大家。

1

添加拖動和滑動事件。 第一個標籤可能會被識別爲拖動或滑動。

請將所有觸摸事件類型打印到控制檯。

var hammertime = Hammer(element).on("tap drag swipe", function(event) {