2013-03-11 2 views
2

У меня странная проблема. Я предоставляю ссылку, которая отправляет запрос ajax для удаления пользователя. Если пользователь впервые нажимает на ссылку и подтверждает окно подтверждения, запускается функция ajax. но если пользователь после этого снова щелкнет ссылку с классом delUser, ничего не произойдет. Ничего не подтвердите, ничего, Кажется, функция click игнорируется, чем. Я выяснил, разрезал ли я часть с помощью confirmbox, все работает нормально.jquery click not working после подтверждения

Неправильно это подтверждается?

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 для определения любой новой переменной, чтобы избежать ее глобальной области. –

+1

Не забудьте также объявить пользовательскую переменную :) 'var User = ...' – Terry

ответ

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

wow это было быстро !, значит, потому что я подтверждаю = ... его не работает? –

+1

отлично, это действительно открыло мне глаза! спасибо вам + всем, кто ответил. t –

+0

@tBook Happy Я мог бы помочь. Еще меньше людей, использующих глобалы, уже стоило того :). – kapa

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"); 
     }   
});