今天我在网页应用中发现了一个关于表单搜索提交功能(在js中)和jQuery中的按钮单击操作的错误。
我有一个附加了动作submitEmpSearch()
的表单。它嵌入在表单的html中,因为它是onSubmit
动作。还有一个与表单相关联的搜索按钮,其中包含onclick
个事件submitEmpSearch()
。我试图从模板中清除嵌入式javascript,转而支持jQuery调用。在一个包含的jQuery调用中,我在$('#search-button').click( submitEmpSearch() )
组内部调用了$(document).ready
。
根据我之前使用.click()
函数的经验,我希望它具有与提供的嵌入式onclick
属性相同的功能。然而,相反,它给页面一个无限循环(显然)加载后立即点击按钮!
现在,我以前总是传递function() {}
模式。我之前从未传过预定义的函数。这是jQuery 语言框架中的某种问题吗?或者还有别的我做错了吗?
答案 0 :(得分:4)
jQuery不是一种语言。 JavaScript是语言。当你想传递函数时,你正在传递函数的结果:
应该是:
$('#search-button').click(submitEmpSearch)
在JavaScript中,函数可以作为值传递。但是,submitEmpSearch()
是函数调用的返回值,正如人们对其他语言的期望一样。
答案 1 :(得分:3)
而不是
$('search-button').click( submitEmpSearch() )
仅使用
$('#search-button').click( submitEmpSearch )
或
$('#search-button').click( function(){submitEmpSearch();} )
此外,如果“搜索按钮”是一个类,则必须添加“。” (点)之前。如果是id,则必须添加“#”。 看看我的例子。
答案 2 :(得分:1)
啊哈!
您应该通过引用传递函数,而不是调用函数并传递其结果:
function handler(){
// ...
}
jQuery('.something').click(handler()); // <- wrong
jQuery('.something').click( handler ); // <- right
答案 3 :(得分:0)
更改自:
$('search-button').click(submitEmpSearch())
到:
$('search-button').click(submitEmpSearch)
这样代替执行submitEmpSearch()并将其返回值传递给click(),您将委托传递给click()。
答案 4 :(得分:0)
试试这个。
$('#search-button').click(function(){
submitEmpSearch();
});