我有一个功能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
答案 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_'预先挂起我的参数变量,所以我可以在函数中使用相同的变量名,并轻松区分这两者。这是我个人的命名惯例。 :)