2014-11-03 138 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); 
相關問題