jquery为元素添加侦听器

时间:2013-05-15 18:42:12

标签: jquery audio bind

我需要一些帮助来添加和播放一些声音,我有这个代码来制作一些音频元素:

        $.each(mySounds, function(i){
            var SoundID = 'sound_'+i;
            $("<audio></audio>").attr({ 
                'id': SoundID,
                'src':'wav/'+mySounds[i], 
                'volume':1,
        }).appendTo('body');

Wich在DOM上产生这个:

<audio id="mySound_0" src="audio0.wav" volume="1"></audio>
<audio id="mySound_1" src="audio1.wav" volume="1"></audio>

如何在调用函数时添加侦听器来播放声音?

我试过这个没有成功:

    $.each(mySounds, function(i){
        var SoundID = 'sound_'+i;
        $("<audio></audio>").attr({ 
            'id': SoundID,
            'src':mySounds[i], 
            'volume':1,
    }).appendTo('body').bind('playSound', function(){
            this.play();
        });

并且这样打电话:

$('#sound_1').playSound();

任何想法如何工作?

2 个答案:

答案 0 :(得分:1)

绑定事件不会为您创建执行的新方法,您需要改为触发事件。

$('#sound_1').trigger('playSound')

答案 1 :(得分:1)

试试这个

 $.each(mySounds, function(i){
        var SoundID = 'sound_'+i;
        $("<audio></audio>",{ 
            'id': SoundID,
            'src':'wav/'+mySounds[i], 
            'volume':1,
    }).appendTo('body').on('playSound', function(){
            this.play();
        });

将Trigger用于自定义事件

$('#sound_1').trigger('playSound');