未捕获的typeerror undefined不是.empty()上的函数

uncaught typeerror undefined is not a function on .empty()

本文关键字:函数 empty undefined typeerror 不是      更新时间:2023-09-26

我得到了未捕获的类型错误undefined不是.empty()方法上的函数。代码是

title: "Criteria: "+ (criteriaText.empty() ? (criteriaIncludeText.empty()? criteriaExcludeText : criteriaIncludeText) : criteriaText)

在上面的代码中,criteriaText和criteriaIncludeText具有值。我可以在我的提醒信息中看到这一点。使用的jQuery版本是1.7。我真的不知道为什么它给出了未捕获的typeerror。undefined不是一个函数,当有合适的值时。有人能帮忙吗?

编辑

这些变量通过以下代码获取它们的值。

var criteriaText = jQuery(".categorySelect option[value='"+categoryId+"']").text(); 
var criteriaIncludeText = jQuery(".categorySelectInclude option[value='"+categoryId+"']").text();
var criteriaExcludeText = jQuery(".categorySelectExclude option[value='"+categoryId+"']").text();

您正试图在字符串(而不是HTML DOM元素)上使用jQuery的empty方法:

例如:

var criteriaText = jQuery(".categorySelect option[value='"+categoryId+"']").text();

然而,jQuery并没有在字符串上提供该方法,因此您正试图执行()一个不存在的函数(也就是说,不是由jQuery的原型链提供的)。

看起来你只是想检查值是否为空(在你的三元语句中):

title: "Criteria: "+ (criteriaText.empty() ? (criteriaIncludeText.empty()? criteriaExcludeText : criteriaIncludeText) : criteriaText)

但是,jQuery的empty()方法"从DOM中删除匹配元素集的所有子节点"并返回对象jQuery(计算结果为true):

alert($('#elementId').empty()?'yes':'no');  
// object jQuery is an object, object coerces to TRUE

现在,你很幸运,因为一个空字符串已经被强制为false,所以你可以在三元中去掉.empty()部分,完成!

.empty()是jquery函数,它应用于jquery对象,使它们像.html('')一样为空。您的文本变量不是jquery对象,而是在为空时返回false的简单字符串,因此您可以尝试:

title: "Criteria: "+ (criteriaText || criteriaIncludeText || criteriaExcludeText);