为什么`$(’audio’)。触发(播放)`两次触发playHandler而’$(’audio’) .play()`只触发一次?

我以前认为trigger(play)只是触发音频的原生playfunction,但今天我只是注意到这两种方法之间存在细微差别。 如果你注册了一个回调play ,例如$('audio').on('play', function() { console.log('playing'); }) ,如果使用trigger(play) ,则会调用两次回调trigger(play)但是在使用play()时只有一次。

  • 怎么会出现这种差异?
  • 是否有可能使trigger(play)仅触发play callback一次,以便防止潜在的错误?

[试玩]


更新

在演示中,我调用trigger('play')trigger('pause')然后play()pause() 。 结果是

 // the following four lines are generated by trigger calls play play pause pause // the following two lines are generated by native calls play pause 

这个演示可以说明我在说什么。

这个问题可以转载于:

  • Chrome版本46.0.2490.86米
  • IE 11.0.9600.18053
  • FireFox 42.0