javascript - jQuery 从准备好的 html 表中动态选择数据

标签 javascript jquery html

我在从 html 表中动态选择数据时遇到一些问题。 我给出了表格和输入的示例,但实际上该表格由数百行组成。

enter image description here

<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">

enter image description here

<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>...

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

我的第一个解决方案是:

$("#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())); 
            });

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

最佳答案

您可以使用.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/

相关文章:

javascript - 突出显示鼠标悬停的单行

html - 又是一个css margin-top 问题……真的崩了吗?

html - 在电话应用程序上保持一致的左对齐

javascript - jQuery HTML 验证子表单

javascript - 表数据未从我的 JavaScript 代码插入到我的表中

javascript - map 平移时的 leaflet.js 触发事件

javascript - 如何使用ajax设置这个值

javascript - 如何在 Angular 中过滤类?

javascript - 在 Heroku 产品上预编译时出现 Rails ckeditor gem js 错误

javascript - 将动态内容设置为 iframe