2015-11-05 3 views
1

Я использую два сценария на своей странице, и есть общая функция щелчка, которая записывает количество кликов, которые делает один пользователь. Поэтому, когда я нажимаю на любой элемент документа, функция click должна запускаться, после чего запускаются другие функции одного и того же элемента. Но в моем случае функция click запускается несколько раз, прежде чем передать элемент управления другой функции.Функция Jquery, выполняемая несколько раз

/************ 1st Jquery Script ***************/ 
    function($) { 
     $(function(e) { 
     $('.signupCustom').click(function(){ 
     var email = $('#form-email').val() 
     var password = $('#pass').val() 
     var firstName= $('#form-first-name').val() 
     var lastName= $('#form-last-name').val() 
     var number= $('#form-mobile').val() 
     var type=$('#sel1').val() 

     $.ajax({ 
      url: '/login', 
      type: 'GET', 
      data: { 
       'email': email, 
       'password':password, 
       'firstName':firstName, 
       'lastName':lastName, 
       'number':number, 
       'type':type 
      }, 
      success: function(data){ 
       if ($('#sel1').val() == "Travel-Agent"){ 
        window.location.href = "/agentVerification.html" 
       } 
       else{ 
        window.location.href = "/dashboardTraveller" 
       } 
      } 
     }) 
    }) 

    $('.login').click(function(){ 
     var email = $('#form-username').val() 
     var password= $('#form-password').val() 
     $.ajax({ 
      url: '/loginCustom', 
      type: 'GET', 
      data: { 
       'email': email, 
       'password':password 
      }, 
      success: function(data){ 
       window.location.href = data['url'] 
      } 
     }) 
    }) 

    $('.destinationsButton').click(function(){ 

     var url="/destinations"; 
     window.location=url; 
    }) 


}); })(jQuery); 

Я добавил ссылку на страницу html, содержащую второй скрипт.

Link to Page

Если вы идете по этой ссылке, есть изображение:

enter image description here

При нажатии на кнопку Вход, функция нажмите запускает несколько раз, прежде чем управление переходит к другой функции. Я хочу, чтобы функция щелчка запускалась один раз, а затем управление должно перейти к другой функции.

Я пробовал e.stopPropagation, но в случае всплывающего окна на той же странице всплывающее окно не открывается. Здесь при нажатии на логин появляется всплывающее окно.

ответ

2

Есть ли какой-либо причине вы используете ниже?

jQuery('*').on("click",function(e){}); 

Я думаю, что это могло бы работать лучше

jQuery('body').on("click",function(e){}); 

удачи

+0

Да, была причина, я хочу, чтобы обнаружить каждый клик сделаны внутри документа. Поэтому я использовал это. –

+0

Спасибо, Chrishtopher, я сделал конкретное редактирование, это сработало ........... Большое спасибо :) –

+0

Причина, по которой это срабатывало несколько раз, - все обертки также имеют событие, пузырящееся к ним, * ', поэтому каждая оболочка также активировала событие. –

0

Я не знаю, где вы застряли, но вы можете использовать one для запуска функции щелчка только один раз:

$(selector).one('click',function(){ 
    //code runs only one click 
});