用于表行的jQuery条件选择器

fea*_*net 10 html jquery html-table jquery-selectors

我有一个数据表:

<td> item </td><td> order code </td><td> price </td>

我正在用jQuery处理表,需要查找订单代码:

$.each($('.productList tbody tr'), function() {
    var orderCode = $(this).find('td:eq(1)').html().trim();
    // do stuff
});
Run Code Online (Sandbox Code Playgroud)

如果没有产品,表格会显示一条消息:

<td colspan="3"> There are no products to display </td>

上面的行导致jQuery函数爆炸.使用条件选择器忽略"无产品"行最有效的方法是什么?是否有一个选择colspan="1"colspan is not set或不管它需要是什么?

SLa*_*aks 13

像这样:

$('.productList tbody tr:has(td:nth-child(2))').each(function() {
    ...
});
Run Code Online (Sandbox Code Playgroud)

这将只选择<tr>具有<td>该父元素的第二个子元素的元素.(nth-child选择器是一个基础的)


Jos*_*ola 8

不要优化你的选择器,它不会很好地扩展,因为jQuery将不得不评估每个子元素.避免错误...

$('.productList tbody tr').each(function() { 
   var orderCode = $(this).find('td:eq(1)');

   if(orderCode.length > 0) { // Make sure it exists
     orderCode = orderCode.html().trim(); 
     // do stuff 
   }
}); 
Run Code Online (Sandbox Code Playgroud)