0

我希望在执行播放功能时停止页面跳转到#soundEvent所在的页面顶部。根据这个答案,https://stackoverflow.com/a/1998717/511438,它是由.html()and引起的.append();可以通过使用 e.preventDefault() 或返回 false(false 不起作用)来防止页面“跳转”。如何使用 preventDefault?

我的文档中有以下内容。准备好

$("[data-play-sound]").each(
    function ()
    {
        var soundFile = $(this).attr('data-play-sound');
        if (soundFile != "") Play(soundFile);
        $(this).removeAttr('data-play-sound');
    }
);

function Play(mp3Path)
{
    $("#sound_").remove();
    console.groupCollapsed(' ');
    $('#soundEvent').append('<embed id="sound_" autostart="true" hidden="true" src="' + mp3Path + '" type="audio/mpeg" />');
    console.groupEnd();
}

我已经尝试过了,但导致错误:对象'0'没有方法 preventDefault

   $("[data-play-sound]").each(
        function (e)
        {
            ...
            if (soundFile != "") Play(e, soundFile);
            ...
        }
    );

function Play(e, mp3Path)
{
    e.preventDefault();
    ...
}
4

2 回答 2

3

jQuery .each()接受参数索引和值,而不是事件,所以0意味着索引

于 2013-03-06T06:02:06.217 回答
0

e.preventDefault仅适用于事件处理程序(return false是取消事件的另一种方式),例如$('#myLink').click(function(e) { e.preventDefault(); });

您实际上没有在此处设置任何事件处理程序...如果您可以通过类选择链接,那么您可以执行以下操作:

$('.someClass').click(function(e) { e.preventDefault(); });

或者您可以只添加onclick="return false;"(即什么都不做)到链接标签。查看您的 HTML 以确定您是否真的需要首先放入会很有帮助href="#soundEvent"

于 2013-03-06T06:09:27.850 回答