Javascript 过滤器导致错误

Javascript 过滤器导致错误,javascript,jquery,filter,Javascript,Jquery,Filter,假设我们有一个表,其中有一些tr子项。第一个tr具有th子元素,其他tr元素具有td子元素。假设触发了一行上的事件。给定的tr的jquery对象是rawRow行将保存rawRow的所有有用的td元素。我想排除第一个td,当且仅当相应的th没有内部文本时。我就是这样做的: var row = rawRow.children("td"); if (!rawRow.parent().children("tr:first").children("th:first").text()) {

假设我们有一个
,其中有一些
tr
子项
。第一个
tr
具有
th
子元素
,其他
tr
元素具有
td
子元素。假设触发了一行上的事件。给定的
tr
的jquery对象是
rawRow
<代码>行将保存
rawRow
的所有有用的
td
元素。我想排除第一个td,当且仅当相应的th没有内部文本时。我就是这样做的:

    var row = rawRow.children("td");
    if (!rawRow.parent().children("tr:first").children("th:first").text()) {
        row = row.filter(":not:first");
    }
但是,这会导致一个错误

未捕获的TypeError:无法读取未定义的属性“replace”

在jquery-2.1.4.min.js内部

如果我看一下,我可以看到类似的用法:

$( "li" ).filter( ":even" ).css( "background-color", "red" );
我的剧本做错了什么?还是一个jquery bug

编辑:

在等待答案的过程中,我一直在阅读和实验。此解决方案的工作原理是:

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

但很自然,这是一个替代方案,它不能回答问题。

使用时:不作为过滤器或选择器使用括号

您得到的错误只是由于jQuery解析选择器的方式造成的

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

很好,回答,肖恩,我很快就会接受的。我现在要吃饭了。我已经试过了,它的效果和预期的一样!