2012-08-16 165 views
0

我似乎在回調和fancybox有一個有趣的問題。這是問題:我有一個fancybox,我從多個按鈕調用。 fancybox是一個模式是沒有框。當用戶選擇是時,發出回叫。這很好。當用戶選擇另一個項目時,問題出現了,fancybox顯示並且用戶再次選擇了yes。回調會被觸發兩次,一次是前一個項目,一次是新項目。這裏是我的代碼:Jquery Fancybox回調問題

按鈕調用顯示的fancybox(在頁面上多次):

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

的fancybox 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); 
      }); 
     } 

    }); 


} 

先進的感謝!

+0

您的HTML無效。 ''。 '

+0

我有正確的問題中的HTML(剪切和粘貼錯誤)。造型是否折舊不是重點。 – DJH 2012-08-16 20:30:12

+0

不,這不是你問題的要點,但在評論中稱這些類型的編碼錯誤是完全可以接受的。對於讀者來說,SO是一個學習的場所(即使你無法欣賞它)。 – Sparky 2012-08-16 20:41:25

回答

-1

我認爲你不應該在beforeShow事件中定義你的點擊處理。也許每次事件發生時,他都會再定義一次。

+0

你能告訴我你爲什麼降級嗎? – fliim 2012-08-16 20:34:21

+0

請提供一個語法正確的解決方案以及相關的代碼。 – Sparky 2012-08-16 20:45:13

+0

你給我-1,因爲我建議一個解決方案,而不提供任何代碼? – fliim 2012-08-16 20:48:29

0

好吧,弗利姆實際上有正確的想法。每次fancybox被調用時,前演出都受到約束。因此,它被要求爲每個綁定項目。我最終將fancybox調用中的Yes/No click事件拖出來,並將每個按鈕調用的方法作爲自己的方法。感謝大家對此的幫助。