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