Запускайте ajax по щелчку мыши только один раз с равными классами

#jquery #ajax #click

#jquery #аякс #щелчок

Вопрос:

я запускаю ajax-скрипт с помощью on click с классами, которые встречаются много раз. Сценарий запускается много раз. С

событие.Остановка распространения(); событие.Остановка распространения();

я почти решил проблему, но часть скрипта (открыть слой) не работает с решением. вот сценарий

 // over 30 layers with .openFieldsButton $(document).on("click", '.openFieldsButton', function(event) {   var id = $(this).attr('fields_id');   var relid = $(this).attr('relid_to_select');   var this_ = this;   var forms_token = $(this).attr('forms_token');   $(this).removeClass('openFieldsButton');   $(this).parent().find('.loadingGif').show();   $(this).parent().find('.openIconToggleBox').hide();   $(this).parent().find('.openIconToggleBox').removeClass('glyphicon-menu-down').addClass('glyphicon-menu-up');     $.ajax({  url: '?isloaded=1amp;open_id='   id   'amp;open_relid='   relid   forms_token   '',  type: 'get',  dataType: 'json',  async: false,  data: {'load_content' : id, 'open_relid': relid, 'isloaded': '1'},  success: function(response) {   $(this_).parent().find('.loadingGif').hide();   $(this_).parent().find('.openIconToggleBox').show(); //with stop propagation is doesn't open   $('#fields_'   id   '').html(response.toggleBoxFields);   event.stopPropagation();  event.stopImmediatePropagation();   }  });     });    

Комментарии:

1. «но части сценария (открыть слой) не работают с решением» Я понятия не имею, что это значит

2. Обратите внимание, что событие уже давно завершилось к моменту успешного запуска ajax, поэтому пытаться предотвратить дефолт или распространение внутри успеха слишком поздно, чтобы быть полезным. Я сомневаюсь, что это действительно связано с вашей конкретной проблемой, хотя это очень неясно

3. я уже использовал preventDefault, но с этим тегом он все равно срабатывает много раз

4. Что на самом деле означает «стреляли много раз»? Вы хотите сказать, что один клик делает несколько запросов ajax? Вы действительно не очень хорошо объяснили проблему в деталях

5. Чтобы открыть начальную загрузку слоя, необходимо добавить класс show, поэтому он не работает при использовании stopPropagation. Теперь я пытаюсь добавить классное шоу в часть успеха.