jQuery / Javascript - 只显示tr与td匹配的数组

时间:2015-11-05 09:24:10

标签: javascript jquery

我正在尝试获取一个表格,只显示td与数组值之一匹配的行。

我已经创建了这个代码的特定部分的一个愚蠢的jsfiddle。我不知道为什么这不起作用,所以会很感激帮助。

不起作用的部分显然是找到与数组值td的匹配。

以下是代码:

        $('body').on('click', '#zipButton', function() {
                    var arrayTest = [123,124,125,126]
                    var tr = find('tbody > tr');
                    $(tr).hide();
                            for(i=0;i<arrayTest.length;i++) {
                            $('.zipTd').each(function () {
                                ($(this).text() == arrayTest[i].toString()) ? $(this).parent().show() : $(this).parent().hide();
                            });   
                            };
        });

http://jsfiddle.net/m4orLpd3/1/

由于

2 个答案:

答案 0 :(得分:0)

您可以使用过滤器

$('body').on('click', '#zipButton', function () {
    var arrayTest = [123, 124, 125, 126]
    $(".zipTd").filter(function () {
        return arrayTest.indexOf(parseInt($(this).text().trim())) == -1 
    }).closest("tr").hide();
});

Fiddle

修改

$('body').on('click', '#zipButton', function () {
    $(".zipTd").closest("tr").hide();
    var arrayTest = [123, 124, 125, 126]
    $(".zipTd").filter(function () {
        return arrayTest.indexOf(parseInt($(this).text().trim())) >= 0
    }).closest("tr").show();
});

Edited Fiddle

答案 1 :(得分:0)

您可以尝试使用jquery&#39; .filter和javascript Array.prototype.filter来执行此操作。

检查以下示例:

&#13;
&#13;
NSArray *gestures = [self.mapView.subviews.firstObject gestureRecognizers];
for (UIGestureRecognizer *recognizer in gestures)
{
    if ([recognizer isKindOfClass:[UITapGestureRecognizer class]])
    {
        UITapGestureRecognizer *tap = (UITapGestureRecognizer *)recognizer;
        if (tap.numberOfTapsRequired == 2)
            [self.mapView.subviews.firstObject removeGestureRecognizer:recognizer];
    }
}
&#13;
var array = [123, 124, 125, 126];

$('body').on('click', 'button', function() {

  var filter = function() {

    var match = false;

    $(this).find('td').each(function() {

      var currentText = $(this).text();

      var filtered = array.filter(function(value) {
        return value == currentText;
      });

      if (filtered.length > 0) {
        match = true;
      }

    });

    return match;

  };

  $('tr').hide().filter(filter).show();

});
&#13;
td {
  border: 1px solid #000;
  padding: 5px 10px;
}
&#13;
&#13;
&#13;