2

我没有编写此代码,我无法弄清楚为什么我在第一个时收到以下错误e.preventDefault()。我尝试在.click事件处理程序中移动该代码,将其传递给function(e){},将其替换为return false,声明它var e = $(this.href)(不要笑,我正在努力学习),我检查了返回的值a href,它是返回正确的hash. 视频播放,但运行 IE 调试器时出现此错误。有人可以告诉我如何正确调试和解决这个问题。谢谢

在此处输入图像描述

HTML

 <a href="#video1" class="blueBtn modal" style="width:150px;"><span>Watch Video <img width="10" height="17" src="images/bluebtn.png"></span></a></div>

Javascript

// FANCY BOX
$("a.modal").click(function(){
    var inline=$(this).attr('href');
    $.fancybox({
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'href'              : inline,
        'onComplete'        : function(){
            $(inline+' .flowPlayer').videoPlayer();
            $.fancybox.center(true);
        },
        'onClosed'          : function(){loc();}
    });
    e.preventDefault();         
});

$(".print").click(function(e){
    window.open("print-docs/"+$(this).parent().attr('id')+".html","print","width=1,height=1");
    e.preventDefault();
});

function loc(){
    var location=window.location.href;
    var replaceHash=location.replace(document.location.hash,"");
    window.location.assign(replaceHash);
}
4

3 回答 3

5

应该

$("a.modal").click(function(e) { // Note the "e" parameter
    // etc
});

...相反,就像在第二个点击处理程序中一样。看,这两个函数都以jQuery Event 对象(原生Event 对象的包装器)作为第一个参数提供。但是你仍然必须让 JavaScript 知道这个参数在你的函数中是如何被引用的。)

于 2012-09-04T21:51:10.883 回答
3

您需要自己添加e参数:

$("a.modal").click(function(e){  //<------- right there
    var inline=$(this).attr('href');
    $.fancybox({
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'href'              : inline,
        'onComplete'        : function(){
            $(inline+' .flowPlayer').videoPlayer();
            $.fancybox.center(true);
        },
        'onClosed'          : function(){loc();}
    });
    e.preventDefault();         
});
于 2012-09-04T21:51:32.713 回答
2

你错过了e参数:

$("a.modal").click(function(e){

   e.preventDefault();  
}
于 2012-09-04T21:52:25.743 回答