0

https://github.com/furf/jquery-ui-touch-punchを使用してタッチ イベントをマッピングしています。jQuery UI ドロップ可能には、イベントと ui オブジェクトが自動的に渡される以下のコードがあります。同じオブジェクトを渡すことができるカスタム ハンドラーを作成したいと考えています。IPAD の touchend イベントで ui オブジェクトの参照を取得する方法を提案できる人はいますか? デスクトップとIPADの両方で同じドロップ機能を使用できるようにします。

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

touchend イベントで dropFunction(event,ui) を呼び出すことができます

追加情報:

テーブル行からjstreeへのドラッグアンドドロップを実現しようとしています。Touch Punch を変更せずにそのまま使用すると、ドラッグ アンド ドロップも呼び出されます。以下のコードを使用して値を読み取っているため、デスクトップ ブラウザーでは機能しますが、IPAD では機能しません。

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

デスクトップブラウザを使用すると、jstree-hovered クラスがホバーしたノードに自動的に追加されますが、これは Ipad では追加されないため、このクラスを touchend メソッドで手動で追加しています。このステップの後、ホバーされたクラスも追加されます。タッチエンドが発生すると、ドロップが呼び出されていないように見えます。

要素を jstree のターゲット ノードにドラッグした後、ドロップがトリガーされるようにタップする必要があります。@FrédéricHamidi

4

1 に答える 1

1

以下は、jstree-hovered クラスで値を読み取ることができるように、jstree で動作するように少し変更する必要があった touchend コードです。追加したいヒントの 1 つは、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;
};
于 2012-07-29T08:34:05.477 に答える