2013-03-11 69 views
2

我是個奇怪的問題。我提供了一個發送ajax請求來刪除用戶的鏈接。如果用戶第一次點擊鏈接並確認確認框,則會觸發ajax功能。但如果用戶之後再次點擊delUser類的鏈接,則什麼也不會發生。沒有確認框沒有任何東西,似乎點擊功能被忽略。我發現如果我使用confirmbox切割零件一切正常。jquery確認後點擊不工作

這是什麼錯誤證實?

jQuery(".delUser").click(function(){  
    // open confirm Window 
    confirm = window.confirm("Nutzer wirklich löschen?"); 
    User = $(this).attr("data-link"); 

    if(confirm == true){ 

      jQuery.ajax({ 
      type: "POST", 
      url: "/Admin/DelUser.php", 
      data: { where: User }, 
      success: function(retData){ 
        jQuery.noticeAdd({text: "" + retData + "", 
        stay: false, 
        type: 'error' 
       });        
       } 
      }); 
      $(this).closest('tr').remove(); 

      } else { 
        talk("Nutzer wurde nicht gelöscht"); 
      }   
    }); 

親切的問候,

託尼

+0

更改確認變量的名頭,使它像變種doOperation = window.confirm。它是由於確認衝突而發生的。使用var來定義任何新變量以避免其全局範圍。 – 2013-03-11 09:38:28

+1

不要忘記聲明用戶變量:)'var User = ...' – Terry 2013-03-11 09:59:23

回答

4

因爲要覆蓋confirm

這條線:

confirm = window.confirm("Nutzer wirklich löschen?"); 

等於

window.confirm = window.confirm("Nutzer wirklich löschen?"); 

其中一個原因using globals is a very bad idea。當你declaring a variable,請始終使用var,所以它不會是全球性的:

var confirm = window.confirm("Nutzer wirklich löschen?"); 

這同樣適用於User。你應該聲明它想:

var User = $(this).attr("data-link"); 
+0

哇這是快!,意思是因爲我確認= ...它不工作? – 2013-03-11 09:36:59

+1

完美,這真是睜開了眼睛!感謝你+所有回答的人。 t – 2013-03-11 09:40:22

+0

@tBook快樂,我可以幫忙。減少使用全局變量的人已經是值得的了:)。 – kapa 2013-03-11 09:42:46

0

試試這個:

jQuery(".delUser").click(function(){  
User = $(this).attr("data-link"); 

if(window.confirm("Nutzer wirklich löschen?")){ 

     jQuery.ajax({ 
     type: "POST", 
     url: "/Admin/DelUser.php", 
     data: { where: User }, 
     success: function(retData){ 
       jQuery.noticeAdd({text: "" + retData + "", 
       stay: false, 
       type: 'error' 
      });        
      } 
     }); 
     $(this).closest('tr').remove(); 

     } else { 
       talk("Nutzer wurde nicht gelöscht"); 
     }   
});