加载页面时,无论情况如何,都会立即发送document.on('click',...)请求

例:

$(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的元素,它也会自动发送

编辑:

变成:

 $(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!");
            });
        });
}

最佳答案

费利克斯·克林(Felix Kling)在他/她的评论中正确地确定了问题,但是我将进一步扩展-您的代码正在执行一个函数(poll.afterSubmit),并将该函数调用的结果分配为单击处理程序。除非该函数返回一个函数,否则可能不是您想要的。

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


上面的代码去除了poll.afterSubmit()调用,并简单地分配了处理程序函数。这可能不足或不足以满足您的需求,但是从您的问题中并不清楚您对poll.afterSubmit的理解是什么。

关于javascript - 页面加载时会自动触发document.on click,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16241828/

10-09 19:11