【问题标题】:jQuery: check if column contains certain valuejQuery:检查列是否包含某个值
【发布时间】:2014-05-26 13:17:17
【问题描述】:

我有一个包含各种值的标准表。相同的值可能会出现在不同的 TD 中,但不会出现在同一列中。

示例:

<table id="myTable">
    <tr>
        <td>text1</td>
        <td>text2</td>
        <td>text3</td>
    </tr>
    <tr>
        <td>text4</td>
        <td>text5</td>
        <td>text6</td>
    </tr>
    <!--more TRs...-->
</table>

有没有办法可以使用 jQuery 来检查某个列是否包含某个值,如果是则返回 1,如果否则返回 0?

示例: 当将此应用于上面的第二列并检查“text2”时,它应该返回 1;如果我检查“text5”,它也应该返回 1;如果我检查“text6”,它应该返回 0,因为此列中不存在。

我正在考虑开始这样的事情:

$('#myTable td:nth-child(2)').each(function() {
    //...
});

感谢您对此提供的任何帮助,蒂姆。

【问题讨论】:

    标签: jquery arrays loops each


    【解决方案1】:

    类似的东西

    $.fn.colCheck = function(col, text) {
        var c = Array.isArray(col) ? col : [col],
            t = this,
            a = [];
    
        $.each(c, function(_, v){
            a.push(
                t.find('tr td').filter(function() {
                    return $(this).index() === (v-1) && $.trim($(this).text()) === text;
                }).length
            );
        });
        return a.length === 1 ? a[0] : a;
    }
    

    FIDDLE

    像这样使用

    $('#myTable').colCheck([1,2,3], 'text5'); // pass array, return array [0,1,0]
    $('#myTable').colCheck(2, 'text2'); // 1
    

    将返回该文本在给定列中出现的次数。

    【讨论】:

    • 这是完美的 - 非常感谢您的快速回复!
    • 对此还有一个问题:我也可以同时将其应用于多个列吗?像上面的例子一样,分别检查第 1、2 和 3 列,然后返回一个类似 [0, 1, 0] 的数组?
    • @user2571510 - 不,但我可以将其更改为接受数组 -> jsfiddle.net/RTrZh/1
    • 太棒了。是的,这很完美。再次感谢!
    【解决方案2】:

    像这样:

    <table id="myTable">
        <tr>
            <td>text1</td>
            <td class="check">text2</td>
            <td>text3</td>
        </tr>
        <tr>
            <td>text4</td>
            <td class="check">text5</td>
            <td>text6</td>
        </tr>
        //more TRs...
    </table>
    

    和jquery:

    function check()
    
    {
    
    var flag = 0;
    $('#myTable td.check').each(function(){
    
    
    if($(this).html() == '')
    {
    flag = 0;
    return flag;
    }
    
    else
    {
    flag = 1;
    }
    
    
    })
    return flag;
    }
    

    【讨论】:

    • 也谢谢你。
    【解决方案3】:
        function mycheck(what) {
            var result = 0;
            $( "#myTable td" ).each(function( index ) {
                var myval = $( this ).text();
                if ((index - 1) % 3 == 0 ) {
                    if (myval == what) {
                        result = 1; return result; 
                    }                   
                }               
            });
            return result;
        }
    

    【讨论】:

    • 这是为您的示例中的特定列(第二列)编写的
    猜你喜欢
    • 1970-01-01
    • 2014-03-15
    • 2022-01-05
    • 2022-07-05
    • 2018-02-17
    • 2013-02-08
    • 2021-10-21
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多