即使Selector类被删除,ajax也会继续运行


ajax keep running even if Selector class is removed

我在两个不同的ajax文件ajaxChangeSimple.phpajaxChangAdv.php中有两个表单。当用户按下一个按钮时,它应该在两种形式之间切换。

$(document).ready(function(){
$('.changeBtn').on('click',function(){
  var yo="<?php echo 'ip_searchmod_'.$unique_qsid; ?>";
  $.ajax({
    type:"POST",
    url:"ajaxChangeSimple.php",
    success: function(response){
      $('#' + yo).html(response);
      $('#swapper').addClass('simpleBtn');
      $('#swapper').removeClass('changeBtn');
    }
  });
});
});

$(document).ready(function(){
$('.simpleBtn').on('click',function(){
  var yo="<?php echo 'ip_searchmod_'.$unique_qsid; ?>";
  $.ajax({
    type:"POST",
    url:"ajaxChangeAdv.php",
    success: function(response){
      $('#' + yo).html(response);
      $('#swapper').addClass('changeBtn');
      $('#swapper').removeClass('simpleBtn');
    }
  });
});
});
<div id="swapper" class="changeBtn">Change</div>

当我第一次单击按钮时,froms交换,#swapper类也交换。但在我再次单击它之后,即使#swapper的类现在是.simpleBtn,第一个ajax函数也会被继续调用。(我通过网络查看)。

可能是什么问题?

您可以简化逻辑委派事件和切换类,例如:

$(document).on('click', '.changeBtn, .simpleBtn', function(){
  var yo="<?php echo 'ip_searchmod_'.$unique_qsid; ?>";
  $.ajax({
    type:"POST",
    url:$(this).hasClass('changeBtn') ? "ajaxChangeSimple.php" : "ajaxChangeAdv.php",
    success: function(response){
      $('#' + yo).html(response);
      $('#swapper').toggleClass('simpleBtn changeBtn');
    }
  });
});

在某些情况下它不能像预期的那样工作,但我想在你的特殊情况下,它会的。