首页 > 解决方案 > 过滤/查找 .eq() 两个不同值的元素

问题描述

我正在尝试过滤一个表行,该行在一列中具有一个值,而在另一列中具有不同的值。所以逻辑是,如果该列的一行有value1和value2,则隐藏所有其他行。如果没有 value1 和 value2 隐藏所有。

以下是我已经用jquery尝试过的

var firstDropVal = $('#first .fstselected').text(); //first DropDown Value
var secondDropVal = $('#second .fstselected').text(); // second DropDown Value

// .rows is the class of my table tr
var $rowsNo = $('.rows').filter(function() {
  return $.trim($(this).find('td:visible').eq(0 && 1).text()) !== firstDropVal && secondDropVal
}).hide();

我的表格的 HTML 代码

while($row = mysqli_fetch_array($result)) {

$i++;


 echo "


<tr class='rows' id='rows".$i."'>

<td name='rows".$i."' id='hersteller".$i."' class='text-left'>".$row['Hersteller']."</td>
<td id='artikel".$i."' class='text-left'>".$row['Artikel']."</td>
<td id='mase".$i."' class='text-left'>".$row['Mase']."</td>
<td id='stuecke".$i."' class='text-left'>".$row['Stuecke']."</td>
<td id='herstellerkurz".$i."' class='text-left'>".$row['HerstellerKurz']."</td>
<td id='masekurz".$i."' class='text-left'>".$row['MaseKurz']."</td>
<td id='farbekurz".$i."' class='text-left'>".$row['FarbeKurz']."</td>
<td id='artikelnummer".$i."' class='text-left'>".$row['Artikelnummer']."</td>


</tr>

 "; ```

标签: javascriptjqueryhtmlcssajax

解决方案


这些与您尝试使用它们的方式不同

.eq(0 && 1)
firstDropVal && secondDropVal

由于运算符优先级:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

您需要 4 个单独的测试(还有其他方法,但这基本上就是您正在做的)

return 
    $.trim($(this).find('td:visible').eq(0).text()) === firstDropVal
    || $.trim($(this).find('td:visible').eq(1).text()) === secondDropVal
    || $.trim($(this).find('td:visible').eq(0).text()) === firstDropVal
    || $.trim($(this).find('td:visible').eq(1).text()) === secondDropVal

推荐阅读