0

我正在使用https://github.com/furf/jquery-ui-touch-punch来映射触摸事件。jQuery UI droppable 具有以下代码,其中自动传递事件和 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 方法中手动添加这个类。在这一步之后,我什至添加了悬停类。当 touchend 发生时,看起来 drop 没有被调用。

在 jstree 的目标节点上拖动元素后,我必须点击它才能触发放置。@弗雷德里克哈米迪

4

1 回答 1

1

下面是 touchend 代码,我必须对其进行一些修改以使其与 jstree 一起使用,以便我可以使用 jstree-hovered 类读取值。我想添加的一个提示是在测试时删除所有警报,因为它会干扰我们使用 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 回答