document.on click在页面加载时自动触发

时间:2013-04-26 17:14:05

标签: javascript jquery

当我加载页面时,无论条件如何,都会立即发送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!");
            });
        });
}

1 个答案:

答案 0 :(得分:2)

Felix Kling在他/她的评论中正确地识别了这个问题,但我会进一步扩展 - 你的代码正在执行一个函数(poll.afterSubmit)并将该函数调用的结果指定为click处理程序。除非该函数返回一个函数,否则这可能不是您想要的。

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

上面删除poll.afterSubmit()调用并简单地指定处理函数。这可能会或可能不足以满足您的需求,从您的问题中不清楚您正在使用poll.afterSubmit注意到什么。