我正在尝试创建一个简单的文本块,当3个表单字段中的1个更改时,该文本块会更新。
这是我的jQuery,它不断收到此错误:TypeError: $(...).updateTitlePrefix is not a function
谁能告诉我这里我做错了什么?
$ = jQuery.noConflict();
$(document).ready(function() {
$('#dataEntryForm\:studyId').updateTitlePrefix();
$('#dataEntryForm\:formNumberQualifier').updateTitlePrefix();
$('#dataEntryForm\:formVersionNumber').updateTitlePrefix();
});
// updates the titlePrefix when either the study#, form# or form version are changed
$.fn.updateTitlePrefix() = function() {
$(this).change(function() {
$('#dataEntryForm\:titlePrefix').text($('#dataEntryForm\:formNumberQualifier').text() + $('#dataEntryForm\:formVersionNumber').text() + $('#studyId').text())
});
}
不确定这是否相关,但我在jquery 1.3.2上,因为这是一个JSF项目,这是Richfaces库中包含的内容。
答案 0 :(得分:14)
$.fn.updateTitlePrefix = function() {
删除括号以获胜。
$.fn.updateTitlePrefix()
是一个函数调用;由于您只是声明该函数,因此无需调用/调用该函数。
这是一个常见的问题,函数需要函数作为参数。例如。
function requriesFn(myFunction) {}
requiresFn(doStuff()); // incorrect (passes the return value of the function doStuff)
requiresFn(doStuff); // correct (passes the function itself)
$.ajax({
error: $.noop() // incorrect
error: $.noop // correct
});
// and my biggest pet peeve,
$(document).ready(function() {
myFunction();
});
// simplify it
$(document).ready(myFunction);
// simplify it some more
$(myFunction);
从技术上讲,可能需要调用一个函数来返回另一个函数,但通常情况并非如此。