Да, это легко с альтернативной нотацией доступа к объекту []
:
var eventName = Modernizr.touch ? 'click' : 'mouseover';
$(el)[eventName](stuff);
Важным фактом здесь является то, что, поскольку функции Javascript являются объектами первого класса, к ним можно получить доступ так же, как и к любому другому свойству объекта. Например, вы можете сделать это:
var foo = { bar: 100 };
console.log(foo.bar);
console.log(foo['bar']);
Две строки практически идентичны.
Поскольку click
и mouseover
являются свойствами выбора jQuery, вы можете получить к ним доступ следующим образом. Например, вы могли бы (если бы вы были так склонны) вызвать метод click
как $(el)['click']()
. Там не было бы никакого смысла, но вы могли бы сделать это.
Здесь вы можете воспользоваться этим альтернативным синтаксисом для обработки случая, когда вызываемая функция зависит от других факторов.
Редактировать. Дополнительную документацию по этому вопросу см. На странице MDC "Операторы-члены" .
.