jQuery模拟点击

时间:2013-03-09 21:46:14

标签: javascript jquery

我想在加载页面时触发一个函数。 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未定义”错误。

6 个答案:

答案 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');

请参阅documentation here

答案 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
});