Jquery无法调用undefined的方法替换

时间:2013-07-01 08:13:31

标签: javascript jquery

我不知道为什么我得到错误,但我得到“不能调用方法替换未定义”。它发生在$('#wizard'+optionalArg)部分,如果我删除了optionalArg部分,它可以正常工作。知道为什么会这样吗?

 function loadWizard(optionalArg) 
    {
    optionalArg = (typeof optionalArg === "undefined") ? "" : optionalArg;
    $('#wizard'+optionalArg).smartWizard({contentURL:'/welcome/form_view',
    transitionEffect:'slideleft', onLeaveStep:leaveAStepCallback,onFinish:onFinishCallback, contentCache:false});
    }

函数调用

var id = 2;
loadWizard(id);

在我发送ID之前我运行此

$('#all_wizards').append('<form action="#" method="POST"><div id="wizard2" class="swMain template"></div></form>');

所以wizard2应该存在..

3 个答案:

答案 0 :(得分:2)

可以是:

$('#wizard'+optionalArg) //would make wizard2

你的html中没有带有这个id的元素,所以在undefine抛出异常时调用方法。

尝试使用空检查:

function loadWizard(optionalArg) 
{
   var myElement=$('#wizard'+optionalArg);
   if(myElement.length>0){
       $('#wizard'+optionalArg).smartWizard({contentURL:'/welcome/form_view',transitionEffect:'slideleft', onLeaveStep:leaveAStepCallback,onFinish:onFinishCallback, contentCache:false});
    }
}

答案 1 :(得分:0)

你确定你有一个

的元素
id="wizard1" (assuming optionalArg = 1)

答案 2 :(得分:0)

通过将console.log放到('#wizard'+ optionalArg)并检查元素是否存在来进行调试?很可能该元素不存在,因此创建和错误。