jQuery:检查列是否包含特定类的TD

时间:2014-04-11 13:35:44

标签: jquery arrays loops each

我使用以下行创建与特定搜索词匹配的所有TD的数组。如果TD包含我的搜索字词,那么它就有#34; highlight"添加。

以下工作正常到目前为止我唯一的问题是,如果一列不包含我的搜索词,我需要添加0(一列有或没有值,但在同一列中不能出现多次)。

有问题的列是2, 4, 6, 8, 10, 12列,因此我的数组应始终包含6个值,如果其中一列不包含搜索词,则只显示0。

换句话说:我需要检查列是否包含带有类&#34的TD;突出显示"或不。

我的功能:

var arr = new Array();
$('.highlight').each(function() {
    arr.push($(this).text());
});

示例HTML:

<table id="myTable">
    <thead>
        <tr>
            <th></th>
            <th class="mayContainHighlight"></th>
            <th></th>
            <th class="mayContainHighlight"></th>
            <th></th>
            <th class="mayContainHighlight"></th>
            <th></th>
            <th class="mayContainHighlight"></th>
            <th></th>
            <th class="mayContainHighlight"></th>
            <th></th>
            <th class="mayContainHighlight"></th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td class="mayContainSearchTerm highlight">search term</td>
            <td>5</td>
            <td class="mayContainSearchTerm highlight">search term</td>
            <td>7</td>
            <td class="mayContainSearchTerm highlight">search term</td>
            <td>3</td>
            <td class="mayContainSearchTerm">other data</td>
            <td>1</td>
            <td class="mayContainSearchTerm highlight">search term</td>
            <td>5</td>
            <td class="mayContainSearchTerm">other data</td>
            <td>1</td>
        </tr>
        // more TRs...
    </tbody>
</table>

希望有人可以帮助我。非常感谢蒂姆。

2 个答案:

答案 0 :(得分:5)

如果我理解你的意思,你在页面中没有任何其他TD(如果你需要识别你想要的那些选择)

你可以用这个编辑你的鳕鱼:

var arr = new Array();
$('TD').each(function() {
  if( $(this).hasClass("highlight") )
    arr.push($(this).text());
  else
    arr.push("0");
});

答案 1 :(得分:1)

通过使用对象,您可以使用key: value存储,我认为您需要知道哪些列具有哪些值,如果不匹配,则默认为0。此外,.each()循环本身仅通过选择附加highlight的那些来过滤:

<table>
    <tr>
        <td data-column="2">Column2 </td>
        <td data-column="4">4th Column</td>
        <td data-column="6">Sixth Test</td>
        <td data-column="8">8More</td>
        <td data-column="10">10th Col</td>
        <td class="highlight" data-column="12">last Col</td>
    </tr>
</table>

<script>
    var obj = {
        2:  0,
        4:  0,
        6:  0,
        8:  0,
        10: 0,
        12: 0
    };

    $('td.highlight').each(function (index, element) {
        obj[$(element).data('column')] = $(this).text();
    });

    //Prints 'last Col'
    console.log( obj[12] );
</script>

小提琴:http://jsfiddle.net/fZDYv/