0

我似乎对回调和fancybox有一个有趣的问题。这是问题所在:我有一个可以从多个按钮调用的花式框。fancybox 是一个模态的 yes no 盒子。当用户选择是时,将发出回调。这很好用。当用户选择另一个项目时出现问题,fancybox 显示并且用户再次选择是。回调被触发两次,一次用于前一个项目,一次用于新项目。这是我的代码:

显示fancybox的按钮调用(页面上的多个):

<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 实际上有正确的想法。每次调用fancybox 时都会绑定之前的节目。因此,每个绑定项目都调用它。我最终将 Yes/No click 事件从 fancybox 调用中拉出来,并为每个按钮设置了它们自己的方法。感谢大家对此的帮助。

于 2012-10-23T15:56:55.750 回答
-1

我认为你不应该在 beforeShow 事件中定义你的点击句柄。也许每次事件发生时,他都会再定义一次。

于 2012-08-16T20:06:45.063 回答