0

コールバックとファンシーボックスで興味深い問題が発生しているようです。問題は次のとおりです。複数のボタンから呼び出すファンシーボックスがあります。fancybox は、モーダルの yes no ボックスです。ユーザーが [はい] を選択すると、コールバックが発行されます。これはうまくいきます。この問題は、ユーザーが別のアイテムを選択すると、fancybox が表示され、ユーザーが再度 [はい] を選択したときに発生します。コールバックは、前のアイテムに対して 1 回、新しいアイテムに対して 1 回、合計 2 回発生します。これが私のコードです:

ファンシーボックスを表示するためのボタン呼び出し (ページ上に複数):

<button id="ctl00_ContentPlaceHolderColMain_ucSKUList_rptSkuList_ctl00_btnAdd" class="btn btnCart btnColor5" ss="oos" skuid="12345" onclick="initAddToCart(this);">Back Order</button>

ファンシーボックスのhtml:

<div id="backorderVerify" style="display:none;">
        <div class="inner">
            <h2>Item is not in stock!</h2>
            <div class="base">
                <div align='center'>
                    Would you like to backorder?
                </div>
                <div align="center" style="margin:20px 0 0 0;">
                    <input type="button" id="btnBOYes" value="Yes" />
                    <input type="button" id="btnBONo" value="No" />
                </div>              
            </div>
        </div>
    </div>

Javascript:

function backorderVerify(objAddBtn) {

    $.fancybox({
        'closeBtn': false,
        'href' : '#backorderVerify',
        'beforeShow' : function () {

            $("#btnBOYes").click(function () {
                $.fancybox.close(true);                    
                    addToCart($(objAddBtn).attr("skuid"), objAddBtn);
            });

            $("#btnBONo").click(function () {
                $.fancybox.close(true);
            });
        }

    });


}

ありがとうございます!

4

2 に答える 2

0

わかりました、fliim は実際に正しい考えを持っていました。ファンシーボックスが呼び出されるたびに、ビフォアショーがバインドされていました。したがって、バインドされたアイテムごとに呼び出されていました。最終的に、ファンシーボックスの呼び出しから Yes/No クリック イベントを取り出し、ボタンによって呼び出される独自のメソッドをそれぞれ作成しました。これについてみんなの助けをありがとう。

于 2012-10-23T15:56:55.750 に答える
-1

beforeShow イベントでクリックハンドルを定義するべきではないと思います。たぶん、イベントが発生するたびに、彼はもう一度定義します。

于 2012-08-16T20:06:45.063 に答える