在touchend中获取jquery ui对象的引用

时间:2012-07-28 14:12:58

标签: ipad jquery-ui jquery-ui-draggable

我正在使用https://github.com/furf/jquery-ui-touch-punch来映射触摸事件。 jQuery UI droppable具有以下代码,其中事件和ui对象自动传递。我想编写一个自定义处理程序,我可以传递相同的对象。任何人都可以建议我如何在IPAD上的touchend事件中获取ui对象的引用?这样我就可以为桌面和IPAD使用相同的drop功能。

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发生时,它似乎没有被调用。

在jstree的目标节点上拖动元素后,我必须点击它以便触发掉落。 @FrédéricHamidi

1 个答案:

答案 0 :(得分: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;
};