13

我正在使用 Twitter Bootstrap 模式窗口。以防模式窗口由于 js 错误而无法工作 - 有一个后备页面。如果模态窗口未加载,我如何确保页面已加载?

打开模态窗口的链接

<a href="#login-modal" data-toggle="modal" data-target="#login-modal">Login</a>

模态窗口

<!-- Login Modal -->
        <div id="login-modal" class="modal hide fade landing-modal" tabindex="-2" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                    ×
                </button>
                <h3>Login</h3>
            </div>
            <div class="modal-body">
                <form>
                    <div class="control-group">
                        <label for="email">Email Address</label>
                        <div class="controls">
                            <input class="input-medium" name="email" type="text"  />
                        </div>
                    </div>
                    <div class="control-group">
                        <label for="password">Password</label>
                        <div class="controls">
                            <input class="input-medium" name="password" type="password" />
                        </div>
                    </div>
                    <div class="control-group">
                        <label class="checkbox">
                            <input type="checkbox" value="">
                            Remember me</label>
                    </div>
                    <div class="control-group">
                        <div class="controls">
                            <button type="submit" class="button">
                                Login
                            </button>
                        </div>
                    </div>
                </form>
            </div>
        </div>

当我尝试将链接添加到 href 时,如下所示

 <a href="login.html" data-toggle="modal" data-target="#login-modal">Login</a>

模态窗口中的链接页面加载!!

在此处输入图像描述

4

2 回答 2

28

查看 bootstrap-modal.js 中的第 223 行揭示了正在发生的事情:

, option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())

使用数据 api 时,模式会检查href属性是否不是 id 并将其设置为remote选项的值。这会导致页面data-target最初加载内容,然后href作为内容加载remote内容。

因此,为避免将 href 内容加载到您需要data-remote="false"在链接上指定的模式中:

<a href="/some-login-page.html" data-toggle="modal" data-target="#login-modal" data-remote="false">Login</a>
于 2012-12-05T17:35:25.837 回答
0

Modal 插件优先考虑data-target属性。然后,您可以使用hrefto 指向您想要的后备链接。由于 Modal 插件调用与 selector 匹配的点击事件preventDefault因此[data-toggle="modal"]只有在禁用 JavaScript(或 Modal 插件未加载)时才会跟踪该链接。

但是,要记住的一件事是 Modal 插件确实使用该href属性来加载远程内容。要绕过该功能被激活,只需在值的末尾包含一个“#” href

<a href="/some-login-page.html#" data-toggle="modal" data-target="#login-modal">Login</a>
于 2012-12-05T13:07:44.870 回答