jQuery 中 .trigger('play') 和 .play() 的区别

Posted

技术标签:

【中文标题】jQuery 中 .trigger(\'play\') 和 .play() 的区别【英文标题】:Difference between .trigger('play') and .play() in jQueryjQuery 中 .trigger('play') 和 .play() 的区别 【发布时间】:2013-08-20 07:43:00 【问题描述】:

我只是想知道 jQuery 函数“.trigger('play')”和“.play()”之间的区别。我希望我的网站在您按下导航按钮时播放声音。它应该是 html5 标记的声音。

当我使用这个 jQuery 代码时它可以工作:

$('nav ul li a').click(function()
    $('#soundFX').trigger('play');
);

但不是这个:

$('nav ul li a').click(function()
    $('#soundFX').play();
);

感谢您的回答!

【问题讨论】:

参考this SO问题。 play 不是 jQuery 的函数,而是常规的 DOM 函数。 【参考方案1】:

Play 不是 jQuery 方法,它是 DOM 元素的函数。因此,您需要在 Dom 元素本身上调用它,如下所示:

       document.getElementById('soundFX').play();

当您在 jQuery 对象上调用 trigger 方法时,您将触发该元素上的原生事件,在这种情况下,您将触发 jQuery 选择器选择的元素的原生播放方法。 希望有帮助。 R.

【讨论】:

谢谢!这向我解释了很多。甚至比我要求的还要多! :)【参考方案2】:

我刚刚注意到.trigger('play') 会导致play 处理程序被调用两次,但.play() 只会导致一次。

demo

【讨论】:

以上是关于jQuery 中 .trigger('play') 和 .play() 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Dojo 是不是有等效于 jQuery.trigger() 的功能?

jquery的bind()和trigger()

jquery 1.9.1 .trigger() 没有将参数传递给点击处理程序

使用jQuery中trigger()方法自动触发事件

Jquery 中 .trigger 的用法

jquery trigger('mouseenter')在tampermonkey中无效