如何匹配jquery中的列以进行文本匹配,并从匹配的行返回另一列

时间:2017-03-16 06:28:44

标签: javascript jquery

我有一个html表,如下所示:

enter image description here

是否有办法根据类别找出菜肴名称。 仅基于<td>文字? 例如:输出将是 海鲜:黄油和酱油中的扇贝,大蒜黄油中的虾等。 饮料:朝日玻璃,可口可乐等.... 感谢...

2 个答案:

答案 0 :(得分:0)

下面的函数需要匹配的列号,应该匹配的文本以及匹配必须返回值的returnColumn。

columnMatch :要查看
文本的列号 matchText :您要匹配的文字
returnColumn :如果匹配,您希望从中返回文本的列号

function getMatchesFromTable(matchColumn,matchText,returnColumn)
    {
        var matchedValues = [];
        $("table tr td:nth-child("+matchColumn+")").each(function () {
              if($(this).text() == matchText){
                  matchedValues.push($(this).parent().find('td:nth-child('+returnColumn+')').text());
              }
        });

       return matchedValues;

    }

您可以致电的案例示例:

getMatchesFromTable(3,"Seafood",5);

这将返回类别为海鲜的所有元素的数组

我试图编写一个通用函数来匹配所有用例。仍然可以根据您的要求进行更多扩展,例如返回匹配行中的多个列,匹配不区分大小写等。您可以修改此基本功能以向其添加更多功能。

答案 1 :(得分:0)

试试这个

var array = [];    

var headers = [];
$('table th').each(function(index, item) {
    headers[index] = $(item).html();
}); 
$('table tr').has('td').each(function() {

    var arrayItem = {};
    $('td', $(this)).each(function(index, item) {
        arrayItem[headers[index]] = $(item).html();
    });
    array.push(arrayItem);
});    
alert(JSON.stringify(array));

$(array).each(function(index, item) {
    if ($.inArray("find", item) > -1){ 
            alert('found');
    }
}); 

或者您可以使用

$('table tr').has('td').each(function(index, td) {
    var tableRow = td.filter(function() {
       return $(this).text() == "foo";
    }).closest("tr");
});