【问题标题】:jQuery facebox not working with DD Ajaxtabs, any solution?jQuery facebox 不能与 DD Ajaxtabs 一起使用,有什么解决方案吗?
【发布时间】:2011-12-07 17:39:20
【问题描述】:

拔掉头发两个小时后,我仍然无法找出冲突。请帮助我解决此问题。我正在使用 http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/ajaxtabs_suppliment3.htm 为我的网站创建 ajax 选项卡,还使用 ​​http://defunkt.io/facebox/ 为模式窗口。但是,当我尝试通过 ajax 选项卡加载 Facebook 链接时,它不会将内容加载到 Facebook 中。但它适用于 ajax 选项卡之外的任何链接。有什么想法吗?

【问题讨论】:

    标签: jquery facebox dd


    【解决方案1】:

    这仅仅是因为您加载到 DOM 中的任何新内容都不会附加任何先前设置的事件处理程序。

    因此,在这种情况下,您的 facebox 插件会在新内容加载到 ajax 选项卡之前进行初始化。因此,从本质上说,facebox 插件并不知道这些新链接的存在。

    答案是在加载新内容后重新初始化插件。

    所以你需要调用:-

      $('a[rel*=facebox]').facebox()
    

    ...再次,一旦新的 ajax 选项卡内容被加载到 DOM 中。通过对 ajax 选项卡脚本的简要了解,我想您可以通过简单地重新初始化 facebox 插件(如上所示)来轻松解决这个问题,方法是将该行添加到每次将任何新内容加载到 ajax 选项卡时都会调用的函数中。

    或者(更简单)您可以使用 jQuery livequery plugin 初始化 facebox 插件

    使用此代码(在您的网站上包含 livequery 脚本后:-

    $('a[rel*=facebox]').livequery(function() {
    
    $(this).facebox();
    
    });
    

    Livequery 会在新加载的 Facebook 链接添加到 DOM 时自动检测它们,并为您应用 Facebook 插件。

    编辑:

    如果这仍然没有达到预期的效果(虽然我真的不明白为什么当我以前使用它时不作为实时查询是一个梦想)尝试这个肮脏的小技巧,每次你用鼠标解开和重新绑定 Facebook下。在任何新旧 Facebook 链接上。

    $('a[rel*=facebox]').live("mousedown", function() { 
        $(this).unbind('click'); //everytime you click unbind the past event handled.
        $(this).facebox();
    });
    

    【讨论】:

    • 实时查询解决方案有时会起作用。有时它会失败。我可以知道我应该在哪里添加第一个解决方案吗?
    • 我刚刚用第三种解决方案更新了我的 anwser,虽然有点 hack... 应该可以为您解决问题。
    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2016-05-06
    • 2022-08-15
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多