3

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

4

1 回答 1

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

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

于 2013-03-21T16:58:23.973 回答