Jquery 基于Modernizer的不同方法:单击与悬停

Jquery 基于Modernizer的不同方法:单击与悬停,jquery,function,methods,modernizr,Jquery,Function,Methods,Modernizr,我希望能够根据Modernizer的触摸/非触摸输出在.mouseover和.click事件之间进行选择 if (Modernizr.touch) { $(el).click(stuff); $(el).click(stuff); } else { $(el).mouseover(stuff); $(el).mouseover(stuff); } 但我不想把这些东西写两遍。是否可以定义一些东西,以便我可以调用: if (Modernizr.touch) {correctEven

我希望能够根据Modernizer的触摸/非触摸输出在.mouseover和.click事件之间进行选择

if (Modernizr.touch) {
  $(el).click(stuff);
  $(el).click(stuff);
} else {
  $(el).mouseover(stuff);
  $(el).mouseover(stuff);
}
但我不想把这些东西写两遍。是否可以定义一些东西,以便我可以调用:

if (Modernizr.touch) {correctEvent = click} else {correctEvent = mouseover}
$(el).correctEvent(stuff);
$(el).correctEvent(stuff);

是的,使用替代对象访问符号[]很容易做到这一点:

这里的相关事实是,由于Javascript函数是一级对象,因此可以用与任何其他对象属性相同的方式访问它们。例如,您可以执行以下操作:

var foo = { bar: 100 };
console.log(foo.bar);
console.log(foo['bar']);
这两条线实际上是一样的

由于click和mouseover是jQuery选择的属性,因此您可以这样访问它们。例如,如果愿意,可以将click方法称为$el['click']。没有意义,但你可以做到

在这里,您可以利用这种替代语法来处理要调用的函数依赖于其他因素的情况


编辑:有关这方面的更多文档,请参阅。

是的,使用替代对象访问符号[]很容易:

这里的相关事实是,由于Javascript函数是一级对象,因此可以用与任何其他对象属性相同的方式访问它们。例如,您可以执行以下操作:

var foo = { bar: 100 };
console.log(foo.bar);
console.log(foo['bar']);
这两条线实际上是一样的

由于click和mouseover是jQuery选择的属性,因此您可以这样访问它们。例如,如果愿意,可以将click方法称为$el['click']。没有意义,但你可以做到

在这里,您可以利用这种替代语法来处理要调用的函数依赖于其他因素的情况

编辑:有关这方面的更多文档,请参阅