如何在其他功能中访问jquery taphold

时间:2014-05-17 12:25:47

标签: javascript jquery-mobile canvas touch

我有一个包含对象的画布,并且有一个对象的事件处理程序:selected。当我选择对象时,pageX和pageY会在鼠标/触摸指针处出现div(vtover)。

我想要实现的是使用jQuery Mobile将事件处理程序从单击更改为触摸taphold。我试图将所有代码放在我的taphold中,但那不起作用。

我该如何解决这个问题?

chartdiv是我的画布容器的ID

代码

canvas.observe("object:selected", function (e) {
    $("#chartdiv").on("taphold", function (a) {
       // tried to put below code inside this, but this didnt work out.
    });
    var obj = e.target;
    $("#vtover").show();
    $("#vtover").offset({
        left: event.pageX,
        top: event.pageY - 200
    });
    $("#vt_vol").val(myvol.toLocaleString("de-DE") + " " + unit);
    $("#vt_period").val(myper + " Tage");
    $("#vt_sump").val(sumper.toLocaleString("de-DE") + " " + unit);
    $("#vt_diffp").val(Math.round((myvol * myper / sumper) * 100) + " %");
});

1 个答案:

答案 0 :(得分:1)

你不能这样做,至少不是这样,这应该有效:

var canvasHandler  = {
    obj : null
}

canvas.observe("object:selected", function (e) {
    canvasHandler.obj = e.target;
});

$(document).on("taphold", "#chartdiv",function (a) {

    // Now if you need selected canvas just use canvasHandler.obj

    $("#vtover").show();
    $("#vtover").offset({
        left: event.pageX,
        top: event.pageY - 200
    });
    $("#vt_vol").val(myvol.toLocaleString("de-DE") + " " + unit);
    $("#vt_period").val(myper + " Tage");
    $("#vt_sump").val(sumper.toLocaleString("de-DE") + " " + unit);
    $("#vt_diffp").val(Math.round((myvol * myper / sumper) * 100) + " %");
});