uncaught typeerror undefined不是.empty()的函数

时间:2014-11-03 07:19:04

标签: javascript jquery jquery-ui

我正在获取未被捕获的类型错误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();

2 个答案:

答案 0 :(得分:2)

您正尝试在字符串(而不是HTML DOM元素)上使用jQuery's empty method

例如:

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()部分,完成!

答案 1 :(得分:1)

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

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