jQuery .on()在事件委托中有多个选择器?

我在jQuery 1.7中使用了.on() ,并想知道是否有可能为已注入页面的元素一次附加多个选择器。 以前,我使用的是live() – 但很明显,为什么我想在性能改进的情况下移动。

你能用.on()的方式使用.on()

 $(document).on('click', '#selector1, #selector2, .class1', function () { //stuff }); 

附加到文档中是否有任何好处?

  1. 你能用这样的方式使用.on():

     $(document).on('click', '#selector1, #selector2, .class1', function () { //stuff }); 

    是的,那会有效。

  2. 我希望使用它而不是live()给出性能改进。

    与使用live()相比,使用该代码片段没有性能优势,因为live()本身将事件绑定到文档,而在jQuery 1.7中, on后台进行实时调用。

  3. 附加到文档中是否有任何好处?

    绑定到document的缺点是事件必须在处理之前遍历整个祖先列表; 正如jQuery文档中指出的那样,这是最慢的路径。 最好通过将处理程序附加到更靠近事件源的元素来更快地处理事件。

它是可能的,“this”是点击的选择器,而不是文档。

最好是附加到选择器最近的父元素。 单击“#selector1”时,事件会冒泡到事件处理程序元素,此处为:document。

层越多,动作越多。 此外,如果在selector1和document之间有另一个click事件处理程序,则可以使用event.stopPropagation();拦截它event.stopPropagation(); ,永远不会到达“文档”事件处理程序。

你可以检查这个小提琴中的流氓事件“拦截”。