如何在绑定事件中将事件传递给函数 - jquery mobile

时间:2011-10-22 00:56:51

标签: jquery-mobile

我有一个功能SomeFunction(事件) - 我想将一个'tap'事件绑定到一个('#selectorid')元素,我想知道什么是正确的语法:

我应该使用:

 $('#selectorid').unbind().bind('tap',SomeFunction);   

或:

  $('#selectorid').unbind().bind('tap',function(event){
    SomeFunction(event);});});

或:

 $('#selectorid').unbind().bind('tap',function(){
       SomeFunction(event);}); 

$('#selectorid').unbind().bind('tap',SomeFunction(event));   

我对此已经完全混淆了,并且很乐意澄清一下......

我正在使用最近的rc2 jquery mobile

1 个答案:

答案 0 :(得分:2)

#1应该完成工作,但要求你全局定义“SomeFunction”:

$( "#selectorid" ).unbind().bind( "tap", SomeFunction );

当事件被触发时,它将调用相同的“SomeFunction”并将事件作为它的第一个参数传递,所以你要做的就是定义SomeFunction,如下所示:

SomeFunction( p_event )
{
  // Do cool evil stuff with the event parameter like cancel the tap event >:)
  p_event.preventDefault();
  // That's it. :)
}

#2也可以使用,但同样需要全局定义“Somefunction”。

$( "#selectorid" ).unbind().bind( "tap", function(p_event)
{
    SomeFunction( p_event );
});

在#2的情况下会发生的是,匿名函数将调用“SomeFunction”并传递事件,就像在第一个示例中一样,但是需要额外的步骤。这就是为什么我更喜欢第一种方法。 :)

#3和#4有错误,只是前两个版本的错误版本。

另外,我所说的全局定义是,“SomeFunction”在页面的任何地方都可用,而不仅仅是在对象,插件或闭包中定义。因为如果是,那么在事件处理程序中调用它可能会产生未定义的错误。如果你想知道,我喜欢用我的字符串使用双引号并使用'p_'预先挂起我的参数变量,所以我可以在函数中使用相同的变量名,并轻松区分这两者。这是我个人的命名惯例。 :)