点击一个按钮,我试图在一个花哨的盒子里显示一个简单的隐藏div。这是的代码:
$("#btnForm").fancybox({ content: $("#divForm").html() });
但是从我所读到的内容来看,这似乎并不是实现这一目标的标准方法。我尝试了以下各项,但未成功:
$("#btnForm").fancybox({ href: "#divForm" });
$("#btnForm").click(function () {
$.fancybox({ href: "#divForm" });
});
$("#btnForm").click(function () {
$("#divForm").fancybox();
});
有人能指出我正确使用此实用程序的方向吗?这是我的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>
答案 0 :(得分: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>
答案 1 :(得分: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>
答案 2 :(得分:6)
您可以使用:
$('#btnForm').click(function(){
$.fancybox({
'content' : $("#divForm").html()
});
};
答案 3 :(得分:3)
对于在接受初始回答很久之后回到此帖子的用户,可能会注意到现在可以使用
data-fancybox-href="#"
在任何元素上(因为数据是HTML-5接受的属性)让fancybox工作,如果由于某种原因你不能出于某种原因使用选项来启动输入表单(比如说你有页面上使用fancybox的多个元素,它们都共享一个类似于你调用fancybox的类。
答案 4 :(得分:2)
简单:例如如果div id&#39; mydiv&#39;
jQuery.fancybox.open({href: "#mydiv"});
这也使得JS代码在div中运行。
答案 5 :(得分:1)
我使用方法为你要在fancybox中显示的元素附加“singleton”链接。这是代码,我使用的一些小编辑:
function showElementInPopUp(elementId) {
var fancyboxAnchorElementId = "fancyboxTriggerFor_" + elementId;
if ($("#"+fancyboxAnchorElementId).length == 0) {
$("body").append("<a id='" + fancyboxAnchorElementId + "' href='#" + elementId+ "' style='display:none;'></a>");
$("#"+fancyboxAnchorElementId).fancybox();
}
$("#" + fancyboxAnchorElementId).click();
}
补充说明: 如果您使用“content”选项显示fancybox,它将复制DOM,这是内部元素。有时这不行。在我的情况下,我需要有相同的元素,因为它们是以形式使用的。
答案 6 :(得分:1)
你只需使用它,它对你有帮助
$("#btnForm").click(function (){
$.fancybox({
'padding': 0,
'width': 1087,
'height': 610,
'type': 'iframe',
content: $('#divForm').show();
});
});