как передать событие в функцию в событии bind - jquery mobile - PullRequest
2 голосов
/ 22 октября 2011

У меня есть функция SomeFunction (событие) - Я хочу связать событие «tap» с элементом («#selectorid») и узнать, какой синтаксис правильный:

я должен использовать:

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

или

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

или

* * 1010

или

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

Я совершенно запутался в этом и был бы рад получить разъяснения.

Я пользуюсь поздним RC3 jQuery Mobile

1 Ответ

2 голосов
/ 22 октября 2011

# 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_», чтобы я мог использовать одно и то же имя переменной в функции и легко различать их. Это мое личное соглашение об именах. :)

...