我想在加载页面时触发一个函数。 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未定义”错误。
答案 0 :(得分:26)
您必须使您的函数匿名:
$('#button').click(function() {
//...some code
});
或传递函数本身:
function getType() {
//...some code
}
$('#button').click(getType);
如果您只想触发点击,请致电.click()
:
$('#button').click();
此外,您的id
参数不是元素的id
。它将是click事件对象。要获取元素id
,您可以使用this
引用点击的元素:
$('#button').click(function() {
var id = this.id;
});
我建议您阅读一些JavaScript和jQuery教程(按此顺序)。
答案 1 :(得分:5)
您正在使用内联表示法,因此,您应该使用匿名函数(无名称函数)
你的代码应该是:
$('#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');
答案 2 :(得分: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();
答案 3 :(得分:2)
在元素上使用.trigger( event [, extraParameters ] )
。
<强> extraParameters 强>
类型:数组或PlainObject
传递给事件处理程序的其他参数。
额外的好处是您可以将数据传递给事件处理程序,而如果使用.click()
,则无法将数据分配给对象。
$("#target").trigger('click');
如果您希望使用extraParameters
:
$( "#foo" ).on( "custom", function( event, param1, param2 ) {
alert( param1 + "\n" + param2 );
});
$( "#foo").trigger( "custom", [ "Custom", "Event" ] );
答案 4 :(得分:1)
.click()
方法需要回调函数。所以你可以做这样的事情:
//Define your function somewhere else
function getType(id) {
//...some code
}
$('#button').click(function() {
getType($(this).attr('id')); //Execute it when its clicked.
});
答案 5 :(得分:0)
试试这个,id不能像你那样传递:
$('#button').click(function() {
var id = this.id;
//...some code
});