2015-08-29 2 views
-2

У меня есть много вызовов ajax, где каждый из них вставляет новый html-код в DOM.In ajax on success Я снова вызываю функции, поэтому у них есть возможность работать с новые элементы DOM. Проблема в том, что каждый новый вызов функции при успешном вызове называется X раз - 1,2,4 ... И, например, если у меня есть функция createNewButton и дважды щелкните по нему, у меня будет три кнопки, потому что второй раз, когда он пройдет, ajax снова вызовет функцию.Как обрабатывать функции после изменения dom

function ajaxAddFormFeild(field_type, value, unique) { 
    $.ajax({ 
     beforeSend: function (request) 
     { 
      request.setRequestHeader("X-CSRF-TOKEN", $('meta[name="csrf-token"]').attr('content')); 
     }, 
     type: "GET", 
     url: base_url + 'Form/' + field_type + '?value=' + value + '&unique=' + unique, 
     success: function (response) { 
      if (unique) { 
       $('.input-options[data-unique="' + unique + '"').first().after(response); 
      } else { 
       $('.form_content').append(response); 
       addNewOption(); 
       changeFormFieldPosition(); 
      } 
      removeFormGroup(); 
      removeFormField(); 
     }, 
     dataType: 'html' 
    }); 
} 

Im building server side generated form builder. Какая будет идеальная реализация?! Вы щелкаете минусами без ответа ...

+1

Некоторый код, пожалуйста. Вероятно, вы подключаете слушателя после каждого вызова AJAX. – Shomz

+1

вы должны указать коды, которые вы пробовали –

+0

Да им, если они не будут работать над новыми элементами. Но когда они прикрепляются дважды или более, их вызывают друг друга. – user5207705

ответ

0

Вы должны использовать метод jQuery $().off(), чтобы отменить событие на этом элементе, который вызывает функцию ajaxCall повторно.

+0

Это не решит проблему, но устранит последствия. – Shomz

Смежные вопросы