jQuery在页面加载的事件中运行一个函数

时间:2017-12-12 01:35:53

标签: javascript jquery events

我试图在.change().click()事件上运行一个函数,并将不同的参数传递给该函数。函数foo在页面加载时自动运行两次(每个事件一次)。在.change().click()事件之上,当我尝试调用它们时,不要做任何事情。

$(document).ready(function(){
    function foo(bar){
        alert("This function runs 2 times on page load");
    }

    $("#some-select").change(foo(false));

    $("#some-button").click(foo(true));
});

我希望foo函数不会在页面加载时自动运行。

2 个答案:

答案 0 :(得分:1)

你试过这个:

$(document).ready(function(){
    function foo(bar){
        alert("This function runs 2 times on page load");
    }

    $("#some-select").change(foo.bind(null, false));

    $("#some-button").click(foo.bind(null, true));
});

答案 1 :(得分:0)

我能够重现这个问题,但在函数中包含调用似乎可以为我纠正。

$(document).ready(function(){
  function foo(bar){
    if(bar){
      console.log('bar is truthy, and somebutton was clicked');
    } else {
      console.log('bar is falsy, and someselect was changed');
    }
    console.log("This function runs 2 times on page load");
  }

  $("#some-select").change(function(){foo(false)})
  $("#some-button").click(function(){foo(true)});

});

我的codepen