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

Javascript参数在许多事件上起作用,javascript,jquery,function,hammer.js,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)

我正在尝试实现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);
其中,您所做的只是传入您希望作为回调函数的函数,偶数将自动调用此函数并将
事件
对象作为第一个参数传递

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

  • 确保包含了Hammer的javascript库
  • 在对
    gSceneActual==2进行评估之前,请确保定义了
    gSceneActual
  • 确保包含jQuery库

  • 您是否遇到javascript错误?哪个部分不工作?如果我做第一个,它工作得很好(滑动和所有操作!),但是第二个和第三个部分根本不渲染屏幕(我想是因为有一个错误,整个过程停止了)。我忘了告诉你是PhoneGap所以。。。几乎没有调试可能用于响应。。。检查123个点。我试着去掉“(ev)”,但没用;(是的!ev表示事件…请确保删除括号“()”,这些括号实际上调用了函数,您不希望调用函数。您希望传递函数以便事件处理程序调用它。好的。我修复了它。我在函数外部(在“全局”区域)声明了var=函数,并且(不知道确切原因)它不工作。现在我把它放在调用它的函数中并工作了。谢谢!