Javascript 参数在许多事件上起作用

标签 javascript jquery function hammer.js

我正在尝试实现hammer.js来滑动页面(就像书本一样)并且我做到了。问题是这有效

  var idHammer1 = document.getElementById("pageHoja1")
  //var hammertime = new Hammer(myElement, hammerOptionsPan);
  var objHammer1 = new Hammer(idHammer1);
  objHammer1.on('panleft panright', function(ev)
  {
    //DBLog("obj1 - gSceneActual Antes: " + gSceneActual + " // X: " + ev.center.x + " Y: " + ev.center.y);
    if (ev.type==='panleft')
    {
      if (!(gSceneActual===2))
      {
        gSceneActual = 2;
        $(":mobile-pagecontainer").pagecontainer("change", "#pageHoja2", { transition: "slide", reverse: false});
      }
    }
    else if (ev.type==='panright')
    {
    }
  });

但这不是:

var fSwipe1 = function(ev)
  {
    //DBLog("obj1 - gSceneActual Antes: " + gSceneActual + " // X: " + ev.center.x + " Y: " + ev.center.y);
    if (ev.type==='panleft')
    {
      if (!(gSceneActual===2))
      {
        gSceneActual = 2;
        $(":mobile-pagecontainer").pagecontainer("change", "#pageHoja2", { transition: "slide", reverse: false});
      }
    }
    else if (ev.type==='panright')
    {
    }
  }

  var idHammer1 = document.getElementById("pageHoja1")
  //var hammertime = new Hammer(myElement, hammerOptionsPan);
  var objHammer1 = new Hammer(idHammer1);
  objHammer1.on('panleft panright', fSwipe1(ev))

这也行不通

function fSwipe1(ev)
  {
    //DBLog("obj1 - gSceneActual Antes: " + gSceneActual + " // X: " + ev.center.x + " Y: " + ev.center.y);
    if (ev.type==='panleft')
    {
      if (!(gSceneActual===2))
      {
        gSceneActual = 2;
        $(":mobile-pagecontainer").pagecontainer("change", "#pageHoja2", { transition: "slide", reverse: false});
      }
    }
    else if (ev.type==='panright')
    {
    }
  }

由于我需要将此事件添加到许多页面(变量#),所以我无法对其进行硬编码...如何使其在循环内可变?

谢谢!

最佳答案

啊,在不知道错误程度的情况下,我确实明白了:

objHammer1.on('panleft panright', fSwipe1(ev));

在这里,您正在自动渲染该函数,但您实际上想要的是使用闭包,以便在事件发生之前不会渲染该函数。我不确定 ev 代表什么,但如果它是事件对象,那么这应该有效:

objHammer1.on('panleft panright', fSwipe1);

您所做的就是传入您想要作为回调的函数,甚至会自动调用该函数并将 event 对象作为第一个参数传递。

我注意到的其他一些事情:

  1. 确保包含 Hammer 的 javascript 库
  2. 确保在 gSceneActual===2 求值之前已定义 gSceneActual
  3. 确保包含 jQuery 库

关于Javascript 参数在许多事件上起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870375/

相关文章:

javascript - angular chart.js 的数据属性中的表达式

javascript - 如何创建类似 Google Wave 的滚动条?

javascript - jQuery & Objects,试图制作一个轻量级的小部件

C 函数查找数组中的模式,打印出一个全为 0 的数组

java - 函数传递每个整数 n 并打印将 n 存储为有符号整数所需的最小位数

javascript - JSON 的奇怪结构

javascript - 带通配符的 Mongoose 查询 Where 子句

javascript - 如何使用下划线 throttle 进行滚动?

javascript - 动态设置 iframe 高度;不适用于 ie 和 chrome

Swift函数编译错误 'missing return'