2011-09-21 33 views
2

我爲我的網站使用jqueryui.sortable小部件,並且它在移動平臺中不起作用。我查看了源代碼,看起來像是mouse.js,它將處理程序綁定到事件。jQuery mobile有jqueryUi.mouse.js版嗎?

是否有jQ mobile的mouse.js版本,或者有沒有簡單的方法將jq移動事件(vmousedown,vmousemove,vmouseup)轉換爲常用的鼠標事件,以便jQuery UI小部件可以接收它們?

回答

1

你可以自己擴展庫,無需太多工作。

因爲如果設備支持觸摸還是不容易的檢查:

var supportTouch = ("ontouchend" in document); 

然後你可以使用基於適當的情況下,如果觸摸啓用與否,下面是jQuery中移動圖書館使用:

var touchStartEvent = supportTouch ? "touchstart" : "mousedown", 
    touchStopEvent = supportTouch ? "touchend" : "mouseup", 
    touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; 

然後更改使用這些變量而不是當前的硬編碼鼠標事件庫,可能看起來是這樣的:

$(".sortable").bind("mousedown", doSomething()); 

但應該是這樣的:

$(".sortable").bind(touchStartEvent, doSomething()); 

做一些測試,你做太多的工作之前,我沒有測試上面的代碼,而不是看着這個排序庫。

另一個需要注意的是,某些移動設備不支持在瀏覽器中拖動對象,我所知道的是Windows Phone 7(包含Mango和不包含Mango)。如果你想支持那些你應該建立一些「非拖放」解決方案。

+0

我剛剛將事件名稱更改爲'v *',但此代碼看起來更好,謝謝! –