用Fancybox显示div

Ada*_*kis 18 javascript jquery fancybox

点击一个按钮,我试图在一个奇特的盒子里显示一个简单的隐藏div.这是代码的作品:

$("#btnForm").fancybox({ content: $("#divForm").html() });
Run Code Online (Sandbox Code Playgroud)

但从我所读到的,这似乎并不是实现这一目标的标准方法.我尝试了以下各项,但没有成功:

$("#btnForm").fancybox({ href: "#divForm" });

$("#btnForm").click(function () {
    $.fancybox({ href: "#divForm" });
});

$("#btnForm").click(function () {
    $("#divForm").fancybox();
});
Run Code Online (Sandbox Code Playgroud)

有人能指出我如何正确使用这个实用程序吗?这是我的HTML:

    <input type="button" value="Load Form" id="btnForm" />

    <div id="divForm" style="display:none">
        <form action="tbd">
            File: <input type="file" /><br /><br />
            <input type="submit" />
        </form>
    </div>
Run Code Online (Sandbox Code Playgroud)

Pat*_*ity 29

据我所知,输入元素可能没有href属性,这是Fancybox获取有关内容的信息的地方.以下代码使用a元素而不是input元素.而且,这就是我所谓的"标准方式".

<html>
<head>
  <script type="text/javascript" charset="utf-8" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script type="text/javascript" src="http://fancyapps.com/fancybox/source/jquery.fancybox.pack.js?v=2.0.5"></script>
  <link rel="stylesheet" type="text/css" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css?v=2.0.5" media="screen" />
</head>
<body>

<a href="#divForm" id="btnForm">Load Form</a>

<div id="divForm" style="display:none">
  <form action="tbd">
    File: <input type="file" /><br /><br />
    <input type="submit" />
  </form>
</div>

<script type="text/javascript">
  $(function(){
    $("#btnForm").fancybox();
  });
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在JSBin上查看它的实际操作

  • 我意识到这有点晚了回答,我只是想指出,如果你想在非元素上使用fancybox,就像输入一样你现在可以使用data-fancybox-href ="#"代替 (2认同)

wak*_*med 11

padde的解决方案是对的,但又提出了另一个问题,即

正如亚当(提问者)所说,它显示空弹出窗口.这是完整且有效的解决方案

<html>
<head>
    <script type="text/javascript" charset="utf-8" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://fancyapps.com/fancybox/source/jquery.fancybox.pack.js?v=2.0.5"></script>
    <link rel="stylesheet" type="text/css" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css?v=2.0.5" media="screen" />
</head>
<body>

<a href="#divForm" id="btnForm">Load Form</a>

<div id="divForm" style="display:none">
    <form action="tbd">
        File: <input type="file" /><br /><br />
        <input type="submit" />
    </form>
</div>

<script type="text/javascript">
$(function() {
    $("#btnForm").fancybox({
        'onStart': function() { $("#divForm").css("display","block"); },            
        'onClosed': function() { $("#divForm").css("display","none"); }
    });
});
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你指出`onStart`和`onClosed`.这应该添加到选定的答案. (2认同)

aur*_*ano 5

你可以使用:

$('#btnForm').click(function(){
    $.fancybox({
            'content' : $("#divForm").html()
        });
};
Run Code Online (Sandbox Code Playgroud)