19

我想在页面加载时触发一个函数。有很多方法可以做到这一点。 但是,当我$('#button').click在我的函数前面添加时,该getType函数无法识别。例如:

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

错误:未定义 getType

我究竟做错了什么?

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

4

6 回答 6

28

您要么必须使您的函数匿名:

$('#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 教程(按此顺序)。

于 2013-03-09T21:48:44.970 回答
6

您正在使用内联表示法,因此,您应该使用匿名函数(无名称函数)

你的代码应该是:

$('#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');

在此处查看文档

于 2013-03-09T21:49:18.407 回答
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();
于 2013-03-09T21:47:49.410 回答
2

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

extraParameters
类型:Array 或 PlainObject
要传递给事件处理程序的附加参数。

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

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

如果您想使用extraParameters

$( "#foo" ).on( "custom", function( event, param1, param2 ) {
  alert( param1 + "\n" + param2 );
});
$( "#foo").trigger( "custom", [ "Custom", "Event" ] );
于 2014-07-24T15:49:29.860 回答
1

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

//Define your function somewhere else
function getType(id) {
    //...some code
}

$('#button').click(function() {
    getType($(this).attr('id')); //Execute it when its clicked.
});
于 2013-03-09T21:51:05.890 回答
0

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

$('#button').click(function() {
    var id = this.id;
    //...some code
});
于 2013-03-09T21:48:49.603 回答