jQuery模拟点击

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

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

错误:未定义getType

我究竟做错了什么?

只是为了澄清,在这种情况下我不能使用匿名函数。 另外,对我来说无论是使用$(document).ready还是$(window).bind("load", function()都没关系,但是使用这些我仍然得到“getType未定义”错误。

你要么让你的函数匿名:

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

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

你的代码应该是:

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

请参阅此处的文档

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

在元素上使用.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" ] ); 

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

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

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

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