兩點:第一,$(".cobhl td:contains('" + searchString + "')")
結果將總是是一個jQuery對象,無論searchString
值。實際上,即使DOM不包含類cobhl
的元素,或者它沒有,但該元素沒有decendant td元素,它仍然會返回一個jQuery對象。
接下來,一個非空的非未定義的對象是「truthy」,這意味着它不具有字面意義上的布爾值true
,但它在if子句的用途中的確評估爲true。
你真正想測試的是返回的jQuery對象是否具有非零長度。例如:
if ($(".cobhl td:contains('" + searchString + "')").length > 0) {
...
更新 寫出下列值到控制檯將幫助你進一步調試問題:
console.log("number of .cobhl elements: " + $(".cobhl").length);
console.log("number of .cobhl td elements: " + $(".cobhl td").length);
console.log("number of .cobhl td:contains('" + searchString + "') elements: " + $(".cobhl td:contains('" + searchString + "')").length);
檢查從這些語句的輸出。你有沒有使用.cobhl選擇器?如果是,那麼下面的任何td元素?如果是的話,searchString值是你期望的嗎?
通常在這種情況下,我發現我在選擇器鏈上有一個錯字。這種按時分解選擇器的技術可以幫助我找到它。
'如果($(」 cobhl TD:包含('」。+搜索字符串+ 「')」)長度)'因爲即使是空的jQuery對象是真正 –
你的意思是 'truthy' :) – MMM
@ MMM thx的更正;) –