附加覆盖的多个按钮,找不到打开的叠加层

时间:2012-10-31 13:02:14

标签: jquery overlay jquery-tools

我正在尝试使用jQuery工具叠加层,当有一组静态按钮启动叠加层时,它可以很好地工作。

然而,当重新创建链接到叠加层的按钮时,叠加层似乎变得孤立,我看不清楚原因。我无法关闭它,我甚至无法通过使用each()遍历DOM来找到它的引用。

我已经看到了一些涉及触发点击的解决方案,但是对于一件事,这似乎是一个不优雅的解决方案,另一方面,当我尝试时,它会导致叠加在关闭之前闪烁。我想了解为什么这不起作用,以及一个好的解决方案,任何人都可以帮忙吗?

HTML

<div id="container">

</div>
<button class='modalLaunch' rel='#modal'>
    Uncontained launch button
</button>
<div id="modal">
    Modal
    <button id="rebuildContainer">Rebuild container</button>
</div>

的Javascript

$(document).ready(function() {
    $("#modal").hide();

    var rebuildContainer = function() {
        $("#container").html("<button class='modalLaunch' rel='#modal'>Contained launch button 1</button><br><button class='modalLaunch' rel='#modal'>Contained launch button 2</button>");           

        var triggers = $(".modalLaunch").overlay({
            mask: {
                color: '#bbbbee',
                loadSpeed: 200,
                opacity: 0.9
            },
            closeOnClick: true,
            load: false
        });
    }

    $("#rebuildContainer").click(function() {
        console.log("rebuilding buttons inside the container div");

        $(".modalLaunch").each(function() {

            var o = $(this).overlay();
            if (o) {
                console.log("there is an overlay associated with this button");
                if (o.isOpened()) {
                    // I would expect this to be true once each time the handler is called
                    console.log("the overlay associated with this button is open");
                }
            }
        });

        $(".modalLaunch").overlay().close();
        rebuildContainer();
    });

    rebuildContainer();
});

http://jsfiddle.net/EveryoneMustWin/hjJtc/

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

自从提出这个问题以来,我已经阅读了这个问题jQuery Tools Alternatives?并决定放弃jQuery Tools可能是最好的。他们网站上的论坛甚至不允许你开始新的帖子!