2011-05-03 60 views
0

在頁面上有幾個添加按鈕(li .plus)。爲什麼在點擊事件後彈出幾次彈出窗口?

當你點擊一個添加按鈕,並承擔json.success是假的,它就會通過$.colorbox插件彈出

的彈出窗口href:"/Handle/Postcode/?val" + Val

提取數據,還有從彈出的是一個提交按鈕(#submitButton) ,當我點擊提交按鈕時,它彈出警告框幾次,我不明白爲什麼會發生?如何解決它?

$("li .plus").click(function(event) { 
    event.preventDefault(); 

    var Val; 
    Val = $('#id').val() 

     $.getJSON(Address +"/Handle/Add", { 
      Val:Val 
     }, function(json) { 
      if (json.success == "false" && json.error == "NoArea") { 
       $.colorbox({ 
        width:"450px", 
        transition:"none", 
        opacity:"0.4", 
        href:"/Handle/Postcode/?val" + Val 
       }); 
       $("#submitButton").live('click', function() { 
        var PostCodeArea = $("#deliveryAreaPostcode").val(); 
        alert(PostCodeArea); 
        //Why does it popup a few times? 
       }); 

      } 

      if (json.success == "true") { 
       Backet(); 
      } 
     }); 
}); 

回答

3

多數民衆贊成在一個簡單的,因爲您正在使用.live()函數綁定您的點擊處理程序。如果該代碼執行超過一次,則綁定發生一次以上。

您可以嘗試跟蹤綁定的狀態,並僅在不存在的情況下才應用它,或者您可以在HTML中使用onClick屬性來調用您的單擊函數。

編輯:只是爲了澄清我的意思是沿着線的東西 -

HTML

<button id='submitButton' onclick="displayAreaCode();">Submit</button> 

JS

function displayAreaCode(){ 
    var PostCodeArea = $("#deliveryAreaPostcode").val(); 
    alert(PostCodeArea); 
} 
+0

你能提供例如你是什麼「的意思嘗試跟蹤綁定的狀態,只有在不存在時才應用它「?謝謝。 – user622378 2011-05-03 17:51:35

+0

我會建議你做內聯調用,但是如果你真的不想使用'OnClick',你可以盲目'$(「#submitButton」)。unbind(「click」)' – HurnsMobile 2011-05-03 18:07:28

+0

我找到了solutuon解決此問題:onComplete:function(){(「#submitButton」)。click(function(e){var PostCodeArea = $(「#deliveryAreaPostcode」)。val(); alert(PostCodeArea); }); } – user622378 2011-05-03 18:36:50

相關問題