如何添加e.preventDefault()

时间:2013-03-06 05:58:44

标签: javascript jquery

我希望停止页面跳转到执行Play功能时#soundEvent所在的页面顶部。根据此答案https://stackoverflow.com/a/1998717/511438,它由.html().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();
    ...
}

2 个答案:

答案 0 :(得分:3)

jQuery .each()采用参数索引和值,而非事件,因此0表示索引

答案 1 :(得分:0)

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

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

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

或者您只需向链接标记添加onclick="return false;"(即不执行任何操作)即可。看到您的HTML以确定您是否真的需要首先放入href="#soundEvent"会很有帮助。