单击之前运行Jquery单击函数

时间:2014-04-08 04:41:54

标签: javascript jquery

我希望我的jquery在单击按钮时加载一个函数。

这很好用:

$(document).ready(function() {
  $("#register").click(function() {
    alert("button");
});

此文档将在文档加载前显示test()函数:

$(document).ready(function() {

  function test(param1, param2){
    alert("param1: "+param1+" param2: "+param2);
  }

  $("#register").click(test("a","b"));

});

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

$(document).ready(function() {
  $("#register").click(function() {
    alert("button 
});

应该是:

$(document).ready(function () {
    $("#register").click(function () {
        alert("button");
    });
});

$(document).ready(function() {
  function test(param1, param2){
    alert("param1: "+param1+" param2: "+param2);
  }
  $("#register").click(test("a","b"));    
});

应该是

$(document).ready(function () {
    function test(param1, param2) {
        alert("param1: " + param1 + " param2: " + param2);
    }
    $("#register").click(function () {
        test("a", "b");
    });
});
一旦$(document).ready()准备好,

DOM就会激活。

我认为你的问题出现在这段代码中:

 $("#register").click(test("a","b")); // I suppose it is executing test().

答案 1 :(得分:2)

您只需通过事件处理程序传递参数,例如this.t允许您将数据映射传递给事件对象,该事件对象通过jQuery作为第一个参数自动反馈给事件处理函数。数据映射将作为第一个参数传递给.click()函数,然后是事件处理函数。

$(document).ready(function() {

  function test(e){
    alert(e.data.param1); //  returns "a"
    alert(e.data.param2); //  returns "b"
  }

  $("#register").click({param1 : "a" , param2 : "b"} , test);

});

您对事件处理程序Stack Overflow

的了解更多

答案 2 :(得分:1)

问题出在您的点击事件处理程序中。这就是你所拥有的:

$("#register").click(test("a","b"));

您可以立即执行test("a","b")功能。相反,你想传入一个调用它的函数。因此,更正的代码是

$("#register").click(function (){
    test("a","b");
});