2013-04-26 2 views
0

Когда я загрузить страницу, document.on('click',...) направляются запросы мгновенно, независимо от состоянияdocument.on нажмите срабатывает автоматически при загрузке страницы

Пример:

$(document).ready(function(){ 
    var poll = new Poll(); 

    if($('.loadPoll')[0]){ //this works fine 
    poll.loadPoll(function(){ 
     console.log("loaded poll successful"); 

    }); 
    } 

$(document).on('click', '#SubmitVote', poll.afterSubmit(function(){ 
     console.log("Poll has been voted on!"); 
    })); //this gets sent regardless of clicks 


}); 

Даже если нет элемента с SubmitVote как ID будет отправлено автоматически

EDIT:

изменено на:

$(document).ready(function(){ 
    var poll = new Poll(); 

    if($('.loadPoll')[0]){ 
     poll.loadPoll(function(){ 
     console.log("loaded poll successful"); 

    }); 
    } 
    $(document).on('click', 'button.SubmitVote', function(){ 
     poll.afterSubmit(function(){ 
      console.log("Poll has been voted on!"); 
      }); 
     }); 
} 
+3

'poll.afterSubmit (function() {...})' немедленно выполняет 'afterSubmit', а возвращаемое значение будет установлено как обработчик событий. Это, вероятно, не то, что вы хотите, но это зависит от того, что делает 'afterSubmit'. –

+0

Спасибо, Феликс. Если вы поместите это как ответ, я могу принять его. – tausch86

ответ

2

Felix Клинг правильно определил этот вопрос в его/ее комментарий, но я расширить немного дальше - ваш код выполняет функцию (poll.afterSubmit) и присвоения результата этой функции вызова в качестве обработчика щелчка. Если эта функция не возвращает функцию, это, вероятно, не то, что вы хотите.

$(document).on('click', '#SubmitVote', function(){ 
    console.log("Poll has been voted on!"); 
}); 

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

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