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

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

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

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

编辑按钮:

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

AJAX :

  1. $(document).on('click', '.add_group', function(e) {
  2. e.preventDefault();
  3. (additional content) });
  4. $(document).on('click', '.update_group', function(e) {
  5. e.preventDefault();
  6. (additional content )});

我尝试的是:

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

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

kx5bkwkv

kx5bkwkv1#

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

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

  1. $(".js-edit-button").on('click', function(e) {
  2. $(this).closest('.form')
  3. .removeClass('is-add')
  4. .addClass('is-update');
  5. });
  6. $(".js-save-button").on('click', function(e) {
  7. var $lastAcion = $(this).closest('.form')
  8. .find('.form-save-last-action-type');
  9. if ($(this).closest('.form').is('.is-add')) {
  10. $lastAcion.text('Add');
  11. }
  12. if ($(this).closest('.form').is('.is-update')) {
  13. $lastAcion.text('Update');
  14. }
  15. });
  1. .form.is-add .is-update {
  2. display: none;
  3. }
  4. .form.is-update .is-add {
  5. display: none;
  6. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <div class="form is-add">
  3. <div class="is-add">Form is in Add Mode</div>
  4. <div class="is-update">Form is in Update Mode</div>
  5. <button type="button" class="js-save-button">Save</button>
  6. <button type="button" class="js-edit-button">Edit</button>
  7. <div class="form-save-last-action-type">None</div>
  8. </div>
展开查看全部

相关问题