0

当我加载页面时,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


});

即使没有带有SubmitVoteID 的元素,它也会自动发送

编辑:

变成:

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

1 回答 1

2

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

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

上面删除了poll.afterSubmit()调用并简单地分配了处理函数。这可能足以满足您的需求,也可能不足以满足您的需求,从您的问题中不清楚您正在尝试什么poll.afterSubmit

于 2013-04-26T17:19:29.193 回答