【问题标题】:get reference of jquery ui object in touchend在 touchend 中获取 jquery ui 对象的引用
【发布时间】:2012-07-28 14:12:57
【问题描述】:

我正在使用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 的目标节点上拖动元素后,我必须点击它才能触发放置。 @FrédéricHamidi

【问题讨论】:

  • 恐怕我不明白你的问题:Touch Punch 将触摸事件转换为鼠标事件,touchend 将转换为相应的事件,因此触发了drop。你不应该添加任何东西来工作。你能详细说明你想要达到的目标吗?
  • 有时,当我们清楚地说明问题时,解决方案就会对我们产生影响。谢谢弗雷德里克让我有点摇晃!!现在可以工作了。我正在为我的问题更新解决方案。 @FrédéricHamidi

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


【解决方案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;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多