我从html表动态选择数据时遇到一些问题。
我以表和输入为例,但实际上表由数百行组成。



<select name="options">
   <option value="equal">=</option>
   <option value="notequal">!=</option>
   <option value="more">></option>
   <option value="less"><</option>
 </select>
 <input type="input" value="input numbers" id="filter">




<table border="1">
<tr>
    <td width="150">NAME</td>
    <td class="wys">Value</td>
    <td>Value2</td>
    <td>Value3</td>
</tr>
<tr>
    <td width="150">Name1</td>
    <td class="wys">65</td>
    <td>87</td>
    <td>988</td>
</tr>...


因此,问题是如何根据输入数据和所选选项隐藏/显示行,假设输入数据引用列Value

我的第一个解决方案是:

$("#filter").keyup(function() {
     var filter = $("#filter").val();
     var options = $("#options").val();

            if(options == 'equal'){
                 $("table td.wys:contains('" + $(this).val() + "')").parent().show();
                 $("table td.wys:not(:contains('" + $(this).val() + "'))").parent().hide();

            }
            else if(options == 'notequal'){
                 $("table td.wys:contains('" + $(this).val() + "')").parent().hide();
                 $("table td.wys:not(:contains('" + $(this).val() + "'))").parent().show();
            }
            else if(options == 'more'){
                 //HOW TO SHOW/HIDE ROW GREATER THAN eg. 100
            }
            else {
                //HOW TO SHOW/HIDE ROW SMALLER THAN eg. 100
            }

});


所以我找到了第二个解决方案...

            var wys = $("table td.wys");
            wys.each(function() {
                 $(this).attr('data-wys', parseInt($(this).text()));
            });


我设置属性并将其解析为int VALUE列中的所有值
如果我选择等于或不等于或多或少并按数字...,有人可以告诉我如何从表中显示/隐藏行?

最佳答案

您可以使用.filter()方法:

// A helper object for doing some math
var operators = {
    'equal':    function(a, b) { return a == b },
    'notequal': function(a, b) { return a != b },
    'more':     function(a, b) { return a > b },
    'less':     function(a, b) { return a < b }
};

var $tr = $('tr').not(':first'),
    $sel = $("select[name='options']").on('change', function() {
       // Trigger the keyup on the select's change event
       $("#filter").keyup();
    });

$("#filter").keyup(function () {
    var v = $.trim(this.value),
        o = $sel.val();

    // Show all the TRs when the value's length is 0
    if (!v.length) return $tr.show();

    $tr.hide().filter(function () {
        var t = $('.wys', this).text();
        return operators[o](t, v);
    }).show();

});


http://jsfiddle.net/q2PVm/1/

关于javascript - jQuery从准备的html表中动态选择数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21464228/

10-12 00:02
查看更多