Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“单击时委派”事件加载fancybox_Javascript_Jquery_Fancybox - Fatal编程技术网

Javascript 使用“单击时委派”事件加载fancybox

Javascript 使用“单击时委派”事件加载fancybox,javascript,jquery,fancybox,Javascript,Jquery,Fancybox,此默认代码工作正常: $('#headerLink').fancybox({ 'ajax' : {type : "GET" } }); 但我想使用委托: $('#header').delegate('#headerLink', 'click', function(){ $.fancybox({ 'ajax' : {type : 'GET'} }); }); $('#header').delegate('#headerLink', 'click', f

此默认代码工作正常:

$('#headerLink').fancybox({
    'ajax' : {type  : "GET" }
});
但我想使用委托:

$('#header').delegate('#headerLink', 'click', function(){
    $.fancybox({
        'ajax' : {type : 'GET'}
    });
});
$('#header').delegate('#headerLink', 'click', function(){
    $(this).fancybox({             // $(this) refers to the link
        'ajax' : {type : 'GET'}
    });
    return false;
});
它似乎在开始加载,但它只显示以下消息,而不是内容: “无法加载请求的内容。请稍后再试。”

然后它卸载,并重定向到链接的url

我尝试将语法更改为
$(this).fancybox({….

我也尝试过使用“live”,但这也不起作用

$('#headerLink').live('click', function(){
    $.fancybox({
       'ajax' : {type   : "GET" }
});

非常感谢您在这方面提供的任何帮助。

只需将代码更改为引用代理中的
元素即可:

$('#header').delegate('#headerLink', 'click', function(){
    $.fancybox({
        'ajax' : {type : 'GET'}
    });
});
$('#header').delegate('#headerLink', 'click', function(){
    $(this).fancybox({             // $(this) refers to the link
        'ajax' : {type : 'GET'}
    });
    return false;
});

只需将代码更改为引用代理中的
a
元素:

$('#header').delegate('#headerLink', 'click', function(){
    $.fancybox({
        'ajax' : {type : 'GET'}
    });
});
$('#header').delegate('#headerLink', 'click', function(){
    $(this).fancybox({             // $(this) refers to the link
        'ajax' : {type : 'GET'}
    });
    return false;
});

我已经尝试过这种语法。唯一的区别是它在重定向之前没有加载错误消息。@grainne:只需执行一次
返回false
来取消链接的defautt操作。更新了我的答案。谢谢。它几乎可以工作了……但现在的问题是,当链接被单击一次时,不会发生任何事情,它必须被单击2nd时间…知道为什么会发生这种情况吗?(我每次都刷新以测试这一点)我还尝试了event.preventDefault()我已经尝试过这种语法。唯一的区别是它在重定向之前没有加载错误消息。@grainne:只需执行一次
返回false
来取消链接的defautt操作。更新了我的答案。谢谢。它几乎可以工作了……但现在的问题是,当链接被单击一次时,不会发生任何事情,它必须被单击2nd时间…知道为什么会发生这种情况吗?(我每次都刷新以测试这一点)我还尝试了event.preventDefault()