2012-07-28 46 views
0

讓jQuery用戶界面對象的引用我使用https://github.com/furf/jquery-ui-touch-punch映射的觸摸事件。 jQuery UI droppable具有下面的代碼,其中事件和ui對象自動傳遞。我想寫一個自定義處理程序,我可以傳遞相同的對象。任何人都可以建議我怎樣才能在IPAD的touchend事件上獲得ui對象的參考?這樣我就可以對桌面和IPAD使用相同的拖放功能。在touchend

drop: function(event, ui) { 
     dropFunction(event, ui); 
    } 

等touchend事件中,我可以叫dropFunction(事件,UI)

附加信息:

我想實現拖動,並從錶行拖放到jstree。如果我只是在不修改的情況下使用Touch Punch,我可以做拖放操作。當我使用下面的代碼讀取值時,它在桌面瀏覽器上工作,但不在IPAD上。

var newOrgId = $('#ohTreeDiv .jstree-hovered').find('span:last').text() 

的jstree,盤旋類使用桌面瀏覽器然而,這並沒有得到在iPad上添加時自動添加到懸停的節點,所以我在touchend方法手動添加這一類。在完成這一步後,我甚至可以添加懸停類。當touchend發生時,它看起來像drop沒有被調用。

的jstree的目標節點上拖動元素後,我必須點擊它,這樣的下降被觸發。 @FrédéricHamidi

+0

恐怕我不明白你的問題:Touch Punch將觸摸事件轉換爲鼠標事件,並且'touchend'將被轉換爲適當的事件,以便觸發'drop'。你不應該添加任何東西來工作。你能詳細說明你想要達到的目標嗎? – 2012-07-29 07:10:32

+0

有時,當我們清楚地說明問題時,解決方案會對我們產生影響。謝謝Frederic讓我有點震動!現在就開始工作了。我正在爲我的問題更新解決方案。 @FrédéricHamidi – Ayub 2012-07-29 08:30:17

回答

1

下面是touchend代碼,我不得不修改點點,使其與jstree的工作,這樣我可以閱讀jstree-徘徊類中的值。我想添加的一個技巧是在測試中刪除所有警報,因爲它會影響我們使用jQuery讀取的值。

c._touchEnd = function(f) { 

    var i = f.originalEvent.changedTouches[0]; 
    var elementFromPoint1 = document.elementFromPoint(i.clientX, i.clientY); 
    var id=elementFromPoint1.id; 
    var str=new String(id); 
    var pos=str.indexOf("dropTarget"); 
    if(pos>=0){ 
     elementFromPoint1.className="jstree-hovered"; 
     } 
    if (!a) { 
     return; 
    } 
    d(f, "mouseup"); 
    d(f, "mouseout"); 
    if (!this._touchMoved) { 
     d(f, "click"); 
    } 
    a = false; 
};