我希望停止页面跳转到执行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();
...
}
答案 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"
会很有帮助。