jQuery <function>不是函数</function>

时间:2013-03-21 16:56:52

标签: jquery

我正在尝试创建一个简单的文本块,当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库中包含的内容。

1 个答案:

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

从技术上讲,可能需要调用一个函数来返回另一个函数,但通常情况并非如此。