0

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();
});

</p>

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

ご協力いただきありがとうございます!

4

1 に答える 1

0

これを尋ねてから、私はこの質問を読みましたjQuery Tools Alternatives?そして、jQueryツールを放棄するのがおそらく最善であると判断しました。彼らのサイトのフォーラムでは、新しいスレッドを開始することさえできません。

于 2012-11-08T15:24:27.400 に答える