2014-11-03 107 views
0

我越来越未捕获类型错误undefined不是函数上.empty()方法。代码是uncaught typeerror 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(); 
+1

我想代替'criteriaText.empty()'你需要使用'criteriaText.length == 0',检查字符串作为一些文本 – Satpal 2014-11-03 07:20:22

+1

这个错误发生的对象有价值,但没有函数 – mfarouk 2014-11-03 07:21:01

+1

'函数isEmpty(str)返回(!str || 0 === str.length);我想用这个来检查是否为空 – harishr 2014-11-03 07:22:05

回答

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

.empty()是适用于jQuery的对象,使他们像空的jQuery .html('')功能。 您的文字变量不是jQuery的对象,但简单的字符串,将返回false空当,因此,你可以尝试:

title: "Criteria: "+ (criteriaText || criteriaIncludeText || criteriaExcludeText); 
相关问题