在同一个fancybox窗口内的fancybox窗口内打开链接

时间:2010-07-12 14:05:43

标签: jquery jquery-plugins fancybox

这可能不是那么困难,因为否则我确定我会在某个地方找到答案......

我想做什么我打开一个fancybox(jquery插件),用ajax-content加载它,当我点击它里面的链接时,它用新的ajaxcontent加载它,就像点击框架内的链接一样。

有什么想法吗?

5 个答案:

答案 0 :(得分:1)

你可以

  1. 在fancybox中使用iframe(最快和最简单,不会使用ajax,但会按照您的意愿执行并更容易进行SEO),或者

  2. 在你的fancybox中加一个div,用ajax和html()填充它,然后将包含的a元素'click事件绑定到一个函数,它将再次执行相同的操作。
    请注意,使用第二种方法,您不会自动使浏览器的后退按钮工作,SEO更难,等等。

答案 1 :(得分:1)

我是这样做的:

  $('#fancybox-content a').live('hover', function(){
    $(this).fancybox();
  });

这将是fancybox-animate,包括调整大小,在fancybox中的任何链接。

答案 2 :(得分:1)

我没有编码,但似乎我在努力了5个小时之后才开始工作

如果您使用fancybox打开一个新的HTML / PHP文件,这确实有用(ie9 / ff / safari / chrome)

我创建了4个页面 - main.php / page1.php / page2.php / page3.php

main.php>> 使用fancybox代码(根据需要设置样式)

$(document).ready(function() {
    $("a.openModal").fancybox({
    'autoDimensions'    : false,
    'width'         : 750,
    'height'        : 500,
    'transitionIn'      : 'elastic',
    'transitionOut'     : 'elastic',
    'titleShow'     : false,
    'hideOnContentClick'    : false, 
    });
}); 

{a href =“page1.php”class =“openModal”}页面名称{/ a}


用户点击我在main.php上指定的fancybox链接(我使用了类,因为我在一个页面上有很多fancybox链接)

所有页面都有相互链接(但不包括main.php)


page1.php& page2.php& page3.php - 必须使用您在主页面中使用的相同代码(否则您将调整大小和转换问题)

page1.php中

$(document).ready(function() {
    $("a.openModal").fancybox({
    'autoDimensions'    : false,
    'width'         : 750,
    'height'        : 500,
    'transitionIn'      : 'elastic',
    'transitionOut'     : 'elastic',
    'titleShow'     : false,
    'hideOnContentClick'    : false, 
    });
}); 
  • {a href =“page1.php”class =“openModal”}页面名称{/ a}
  • {a href =“page2.php”class =“openModal”}页面名称{/ a}
  • {a href =“page3.php”class =“openModal”}页面名称{/ a}

完美适合我 - 通过fancybox Modal链接到一个页面,然后链接到Modal中的页面,指向Modal中的另一个页面的链接(我已经输入了6个链接)。

必须是“更容易”的方式(正确的词语是“正确的”) - 但这种解决方法是我的解决方案

我没有使用表单进行测试 - 我无法让“javascript:history.go(-1)”上班 -

所以只有前进(帮助那将是真棒)

答案 3 :(得分:0)

使用onComplete(1.3或更低)或afterShow(2.0+)回调。

只需在页面上运行相同的代码即可激活fancybox。

我喜欢让它发挥作用,因此您可以轻松地重新调用它。

function initFancybox() {
  $("a.openModal").fancybox({options..., onComplete: initFancybox });
}

如果您只想在新打开的fancybox中激活fancybox链接,也可以手动执行并使用选择器。这可能会稍微有点效率。

function initFancybox(selector) {
  if (selector == null) { selector = ""; }
  $(selector+" a.openModal").fancybox({options..., 
    onComplete: function() { initFancybox("#fancybox-content"); }
  });
}

答案 4 :(得分:0)

是的,你需要的是一个框架(iframe)。 Fancybox必须知道其加载的内容应该像框架一样对待 所以你可能想要使用

$('#contentclassorid').fancybox({ type: "iframe" });