【问题标题】:jQuery simulate clickjQuery模拟点击
【发布时间】:2013-03-09 21:46:14
【问题描述】:

我想在页面加载时触发一个函数。 There are many ways to do this. 但是,当我在我的函数前面添加$('#button').click 时,getType 函数无法识别。例如:

$('#button').click(function getType(id) {
    //...some code
});

错误:getType 未定义

我做错了什么?

澄清一下,在这种情况下,我不能使用匿名函数。另外,我使用$(document).ready 还是$(window).bind("load", function() 对我来说并不重要,但是使用这些我仍然会得到“getType is not defined”的错误。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

你要么必须让你的函数匿名:

$('#button').click(function() {
    //...some code
});

或者传递函数本身:

function getType() {
    //...some code
}

$('#button').click(getType);

如果您只想触发点击,请致电.click()

$('#button').click();

另外,您的id 参数不会是元素的id。它将是点击事件对象。要获取元素的id,可以使用this引用被点击的元素:

$('#button').click(function() {
    var id = this.id;
});

我建议你阅读一些 JavaScript 和 jQuery 教程(按顺序)。

【讨论】:

  • 我认为click 的第一个参数是eventObject 的一个实例。因此,id 将始终是实例,而不是 id
  • @GabrielSantos:是的,这就是我在答案末尾写的。
  • 当您从开头使用 id 时,最后的解释令人困惑;)
  • @GabrielSantos:是的,我同意。我已将其删除。
  • 谢谢大家的帮助,我明白了!
【解决方案2】:

您使用的是内联符号,所以您应该使用匿名函数(无名称函数)

你的代码应该是:

$('#button').click(function() {
      // do your stuff here
    }
);

除此之外,正如标题所说,您需要模拟一个click 事件,对吧?如果是这样,你最好使用类似的东西:

$('#button').on('click', function() {
  alert($(this).text());
});
// somewhere when you want to simulate the click you call the trigger function
$('#button').trigger('click');

documentation here

【讨论】:

  • 这个答案解决了标题中的问题。正是这个标题让 Google 认为这个页面可以回答我的问题,这要感谢 @Abu Romaissae。
【解决方案3】:
$('#button').click(function getType(id) {
    //...some code
});

应该是:

$('#button').click(function() {
        [...] code here
    }
);

function() { } 是一个回调,当我单击某个元素时代码必须执行的操作。

如果你有 getType 函数,你可以将它作为回调传递:

$('#button').click(getType);

如果你想触发一个函数,当页面加载时,你可以这样做:

$('#button').trigger('click');

或者

function getType() {
    [...] code here
}

getType();

【讨论】:

    【解决方案4】:

    在元素上使用.trigger( event [, extraParameters ] )

    额外参数
    类型:数组或PlainObject
    传递给事件处理程序的附加参数。

    额外的好处是您可以将数据传递给事件处理程序,而如果您使用.click(),则无法将数据分配给对象。

    $("#target").trigger('click');
    

    如果您想使用extraParameters

    $( "#foo" ).on( "custom", function( event, param1, param2 ) {
      alert( param1 + "\n" + param2 );
    });
    $( "#foo").trigger( "custom", [ "Custom", "Event" ] );
    

    【讨论】:

      【解决方案5】:

      .click() 方法需要回调函数。所以你可以这样做:

      //Define your function somewhere else
      function getType(id) {
          //...some code
      }
      
      $('#button').click(function() {
          getType($(this).attr('id')); //Execute it when its clicked.
      });
      

      【讨论】:

        【解决方案6】:

        试试这个,id不能像你这样传递:

        $('#button').click(function() {
            var id = this.id;
            //...some code
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-30
          • 1970-01-01
          • 1970-01-01
          • 2012-06-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多