未捕获的类型错误 undefined 不是 .empty() 上的函数
2014-11-03
3217
我在 .empty() 方法中收到未捕获类型错误 undefined is not a function。代码为
title: "Criteria: "+ (criteriaText.empty() ? (criteriaIncludeText.empty()? criteriaExcludeText : criteriaIncludeText) : criteriaText)
在上面的代码中,criteriaText 和criteriaIncludeText 具有值。我可以在我的警报消息中看到这一点。使用的 jQuery 版本是 1.7 。我不太清楚为什么在有正确值的情况下它会给出未捕获类型错误 undefined is not a function。有人可以帮忙吗?
编辑
这些变量通过以下代码获取它们的值。
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个回答
您正尝试在字符串(而不是 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()
部分,完成了!
GitaarLAB
2014-11-03
.empty()
是 jquery 函数,它应用于 jquery 对象以使其为空,如
.html('')
。
您的文本变量不是 jquery 对象,而是简单的字符串,当为空时将返回 false,因此您可以尝试:
title: "Criteria: "+ (criteriaText || criteriaIncludeText || criteriaExcludeText);
Yograj Gupta
2014-11-03