2016-01-08 137 views
-1

假設我們有一個table,它有一些trchildren。第一個trthchildren和其他tr元素有td孩子。假設一行中的事件被觸發。給定的tr的jquery對象是rawRowrow將保存rawRow的所有有用td元素。我想排除第一個td,當且僅當相應的th沒有內部文本時。這是我想做到這一點:過濾器結果出錯

var row = rawRow.children("td"); 
    if (!rawRow.parent().children("tr:first").children("th:first").text()) { 
     row = row.filter(":not:first"); 
    } 

然而,這會導致錯誤

Uncaught TypeError: Cannot read property 'replace' of undefined

jQuery的2.1.4.min.js內。

如果我看docs,我可以看到類似的用法:

$("li").filter(":even").css("background-color", "red"); 

我做了什麼錯在我的劇本?或者它是一個jQuery的錯誤?

編輯:

在等待答案時,我一直在閱讀和試驗。此解決方案的工作原理:

 row = row.filter(function(index) { 
      return !!index; 
     }); 

但自然,這是一個替代方案,它不回答問題。

回答

2

使用時:不作爲過濾器或選擇器使用括號。

你得到的錯誤只是由於jQuery解析出選擇器的方式。

var row = rawRow.children("td"); 
if (!rawRow.parent().children("tr:first").children("th:first").text()) { 
    row = row.filter(":not(:first)"); 
} 
+0

很好,回答,肖恩,我會盡快接受。我現在要吃。我已經嘗試過了,它按預期工作! –