jquery/ajax/class:removeclass()那么addclass()在ajax函数中无法正常工作

kqqjbcuj  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(473)

我有两个使用相同按钮的ajax函数。我的意图就在我的心里 save_button 类, add_group 默认情况下有,但我要做的是单击“编辑”按钮, add_group 将被移除并替换为 update_group 因此使用了不同的ajax函数
保存按钮:

<button type="submit" class="save_button add_group">Save</button>

编辑按钮:

<button type="button" class="edit_group">Edit</button>

AJAX :

$(document).on('click', '.add_group', function(e) { 
  e.preventDefault(); 
 (additional content) });

$(document).on('click', '.update_group', function(e) { 
  e.preventDefault(); 
  (additional content )});

我尝试的是:

$(document).on('click', '.edit_group', function(e) {
  e.preventDefault(); 
  $(".save_button").removeClass("add_group").addClass("update_group"); });

此功能似乎不起作用,如果我使用此功能,“保存”按钮不会触发“添加”或“更新”。询问有关如何解决此问题的任何建议。
(目标:触发 removeClassaddClass 单击“编辑”按钮时)

kx5bkwkv

kx5bkwkv1#

$(document).on('click', //....

对于捕捉事件来说,这确实是一个糟糕的选择。这要求事件在文档的每个父元素中冒泡。如果您有任何捕获元素的父元素(因为它们也可能会取消事件的冒泡),那么它的速度很慢,并且会给您带来巨大的麻烦。我将在下面演示一个更好的解决方案。
根据jquery文档 .on() 大多数浏览器事件从文档中最深、最内层的元素(事件目标)冒泡或传播,它们发生在文档中,一直传播到主体和文档元素。在InternetExplorer8和更低版本中,一些事件(如change和submit)不会本机冒泡,但jquery会将这些事件修补为冒泡并创建一致的跨浏览器行为。
通过类/绑定更改按钮的功能也是一个糟糕的选择,因为当对象本身不是正在发生的事情的容器时,跟踪对象本身的状态要困难得多。
我强烈推荐阅读philip walton的(engineer@google)——分离html、css和javascript。

$(".js-edit-button").on('click', function(e) {
  $(this).closest('.form')
    .removeClass('is-add')
    .addClass('is-update');
});

$(".js-save-button").on('click', function(e) {
  var $lastAcion = $(this).closest('.form')
    .find('.form-save-last-action-type');

  if ($(this).closest('.form').is('.is-add')) {
    $lastAcion.text('Add');
  }

  if ($(this).closest('.form').is('.is-update')) {
    $lastAcion.text('Update');
  }
});
.form.is-add .is-update {
  display: none;
}

.form.is-update .is-add {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form is-add">
  <div class="is-add">Form is in Add Mode</div>
  <div class="is-update">Form is in Update Mode</div>

  <button type="button" class="js-save-button">Save</button>
  <button type="button" class="js-edit-button">Edit</button>
  <div class="form-save-last-action-type">None</div>
</div>

相关问题