2016-05-23 4 views
1

Это мой код. Он загружает содержимое страниц без обновления.JQuery load() делает функции Jquery срабатывает несколько раз

Проблема заключается в том, когда я нажимаю кнопку, обработанную jQuery, и ajax она срабатывает столько раз, сколько я загружаю страницы.

См., Например, Если загружено 2 страницы, jQuery будет срабатывать дважды

Если я загрузил 4 страницы, jQuery будет загружаться 4 раза.

<script> 
     $(document).ready(function(){ 
      //set trigger and container 

      var trigger = $('#nav ul li a'), 
       container = $('#container'); 
      //do on click 


      trigger.on('click', function(e){ 
       /***********/ 
       e.preventDefault(); 

       /* reload content without refresh */ 
       //set loading img 
       $('#container').append('<div id = "loading">WAIT... <img src = "img/ajax-loader-small.gif" alt="Currently loading" /></div>'); 
       //change img location to center 
       $("#loading").css({"position": "absolute", "left": "50%", "top": "50%"}); 
       //get the trigger to reload the contents 
       var $this = $(this), 
        target = $this.data('target'); 

       container.load(target + '.php'); 

       // return false; 
       $(trigger).die('click'); 
      }); 
     }); 

Этот скрипт запускает столько раз, сколько я загрузить страницу через нагрузки() функция, которая означает то же сообщение будет вставлено много раз в базу данных

<script> 

    $(document).ready(function(){ 


    $(document).on("click",".fa-pinterest-square",function(e) { 


     var form = $(this).find('form'); //Since the form is child to <i> 

     $.ajax({ 
      url: "includes/widgets/add_pains.php", 
      type: "POST", 
      data: form.serialize(), 
      success: function(data) { 
       alert(data); 

      } 
     }); 

    }); 
    }); 

</script> 

Как я могу это исправить вопрос?

+0

Ваш вопрос не очень ясен. Ваш код, как он есть, не будет запускать * ничего * несколько раз. Это так же просто, как и на самом деле. Вы оставляете код? Если да, отправьте его здесь. – Marcus

+0

Спасибо, но я почти удалил все с сайта, но он не решил его, что означает проблему во втором скрипте. – jack

ответ

1

Это произошло потому, что вы не очистили прослушиватель событий каждый раз, когда вы загружаете скрипт, а прослушиватель событий, уложенных друг на друга, вызвал триггер несколько раз.

trigger.off('click').on('click', function(){....}) 

.off() метод удаляет обработчики событий, которые были прикреплены с .on().

+0

Спасибо, но это не решило проблему, она по-прежнему срабатывает несколько раз. – jack

+0

@jack, вы отключили $ (document) .on ("click", ". Fa-pinterest-square") тоже? –

+0

Да, я сделал «$ (document) .off (« click »). On (« click »,«. Fa-pinterest-square », function (e) ..», но это не сработало. ваша помощь – jack

0

Пожалуйста, используйте это будет решить вашу проблему

trigger.unbind().click(function() 

     //code 
    }); 
+0

Спасибо, но это не сработало – jack

0

Я зафиксировал проблему, вставив сценарий в index.php, может быть, он был вызван несколько раз из-за включать домашнюю страницу.

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