如何以编程方式触发带有内联 div 的 fancybox?

发布于 2024-11-03 17:48:36 字数 405 浏览 1 评论 0原文

我想让当有人尝试提交表单时出现一个 fancybox。所以我得到了这个:

$('#login-form').submit(function(e) {
    $.fancybox({
        content: '<h2>Hello Fancybox</h2>',
        modal: true
    });
    return false;
});

效果很好,但我宁愿使用我的 div 而不是尝试指定内容字符串中的所有 HTML。我可以用它来弹出它吗

<div style="display:none" id="access-policy">
blah blah blah
</div>

I want to make a fancybox appear when someone tries to submit a form. So I've got this:

$('#login-form').submit(function(e) {
    $.fancybox({
        content: '<h2>Hello Fancybox</h2>',
        modal: true
    });
    return false;
});

Works good, but I'd rather use my div than trying to specify all the HTML in the content string. Can I make it popup with this

<div style="display:none" id="access-policy">
blah blah blah
</div>

Instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

眼眸里的快感 2024-11-10 17:48:36

对于 FancyBox v3 或更高版本,请参阅此答案

对于旧版本:

您需要在 href 属性中设置 div ID。如果您在 content 属性中使用 $('#access-policy').show() ,那么您第二次打开此 fancybox 时将不会显示任何内容。

$('#login-form').submit(function(e) {
    $.fancybox({
        href: '#access-policy', 
        modal: true
    });
    return false;
});

HTML 中也必须是:

<div style="display:none">
    <div id="access-policy">
        blah blah blah
    </div>
</div>

:)

For FancyBox v3 or later see this answer

For old versions:

You need to set in href property the div ID. If you use $('#access-policy').show() in content property the second time you open this fancybox will show nothing.

$('#login-form').submit(function(e) {
    $.fancybox({
        href: '#access-policy', 
        modal: true
    });
    return false;
});

Also in the HTML has to be:

<div style="display:none">
    <div id="access-policy">
        blah blah blah
    </div>
</div>

:)

浅黛梨妆こ 2024-11-10 17:48:36

其他答案需要更新

因为我正在使用已接受的答案的代码,并且挠了半个小时。

在最新的 FancyBox 3 中,他们更改了一些选项名称以及如何使用一些方法。

关于如何打开内联元素的旧版本:

$.fancybox({ // OUTDATED
    href: '#element-id', 
    modal: true
});

需要更改为

$.fancybox.open({ // FancyBox 3
    src: '#element-id', 
    modal: true
});

注意 open 方法和 href->src 更改。

如果没有 open,您将得到一个 fancybox is not a function 错误。如果没有“src”,您将收到无法加载请求的内容的弹出窗口。

希望这可以帮助某人避免我同样的错误,我们确实需要遵循此文档。要想过时就更难了。

The other answers need to be updated

because I was using the accepted answer's code and was scratching my head for half an hour.

In the most recent FancyBox 3, they have changed some option names and how to use some methods.

The older version on how to open an inline element:

$.fancybox({ // OUTDATED
    href: '#element-id', 
    modal: true
});

needs to change to

$.fancybox.open({ // FancyBox 3
    src: '#element-id', 
    modal: true
});

Notice the open method and the href->src change.

Without the open you will get a fancybox is not a function error. Without "src" you will get a requested content cannot be loaded popup.

Hope this help someone to avoid my same mistakes and we do need to FOLLOW THE DOCUMENTATION on this one. That's much harder to be outdated.

情未る 2024-11-10 17:48:36

你可以这样做:

$('#login-form').submit(function(e) {
    $.fancybox({
        content: $('#access-policy').show(), 
        modal: true
    });
    return false;
});

you can do:

$('#login-form').submit(function(e) {
    $.fancybox({
        content: $('#access-policy').show(), 
        modal: true
    });
    return false;
});
笨笨の傻瓜 2024-11-10 17:48:36

没关系。 content 可以是 jquery 对象:

$('#login-form').submit(function(e) {
    $.fancybox({
        content: $('#access-policy'),
        modal: true
    });
    return false;
});

但是 div 必须包裹在隐藏的 div 中,

<div style="display:none"><div id="access-policy">
blah blah blah
</div></div>

否则什么也不会出现;它不会更改显示属性。

Nevermind. content can be a jquery object:

$('#login-form').submit(function(e) {
    $.fancybox({
        content: $('#access-policy'),
        modal: true
    });
    return false;
});

But the div has to be wrapped in a hidden div,

<div style="display:none"><div id="access-policy">
blah blah blah
</div></div>

Otherwise nothing will appear; it doesn't change the display property.

维持三分热 2024-11-10 17:48:36

内容是“任何 HTML”,因此从 Div 获取 HTML 并将其提供给内容

content: $('#access-policy').html(),

Content is "any HTML", so get the HTML from the Div and give it to content

content: $('#access-policy').html(),
⊕婉儿 2024-11-10 17:48:36

这演示了如何在不需要 链接元素的情况下使用 fancybox。

内联 (1.3.4):

<div id="menuitem" class="menuitem"></div>

<div style="display:none;">
    <div id="dialogContent">
    </div>
</div>

$('#menuitem').click(function() {
    $.fancybox({
        'type': 'inline',
        'content': '#dialogContent'
    });
});

内联 (2.1.5):

<div id="menuitem" class="menuitem"></div>

<div style="display:none;">
    <div id="dialogContent">
    </div>
</div>

$('#menuitem').click(function() {
    $.fancybox({
        'type': 'inline',
        'href': '#dialogContent'
    });
});

Iframe

<div id="menuitem" class="menuitem"></div>

$('#menuitem').click(function () {
    $.fancybox({
        type: 'iframe',
        href: 'http://www.abc123.com'
    });
});

This demonstrates how to use fancybox without requiring the <a href> link element.

Inline (1.3.4):

<div id="menuitem" class="menuitem"></div>

<div style="display:none;">
    <div id="dialogContent">
    </div>
</div>

$('#menuitem').click(function() {
    $.fancybox({
        'type': 'inline',
        'content': '#dialogContent'
    });
});

Inline (2.1.5):

<div id="menuitem" class="menuitem"></div>

<div style="display:none;">
    <div id="dialogContent">
    </div>
</div>

$('#menuitem').click(function() {
    $.fancybox({
        'type': 'inline',
        'href': '#dialogContent'
    });
});

Iframe:

<div id="menuitem" class="menuitem"></div>

$('#menuitem').click(function () {
    $.fancybox({
        type: 'iframe',
        href: 'http://www.abc123.com'
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文