删除包含特定文本的td单元格

时间:2015-06-13 01:06:58

标签: jquery

   var donotcountS = 'td.player:contains(S)';  

  $(data).find('td.two_column_layout .report').each(function (index, element) {
  if ($(this).find("td.player:not("+donotcountS+")").length !== +RequiredStarters && $(this).attr("id") !== "InvalidLineup")

我正在尝试计算所有td.player单元格,除了那些子类跨越类包含特定字母的单元格。这就是我所拥有的。我设置了一个var" donotcountS" ,但我有两个问题。

  1. 我如何使var也使用真或假声明,以便我可以根据真假设置决定是否要计数?

  2. 我如何添加名为donotcountP的第二个变量,所以我也可以删除带有文本P的跨度警告,不要计算,也可以使用true / false,这样我就可以打开或者1或者其他

  3. 示例HTML

    <table>    
     <caption><span><a></span></caption>    
      <tbody>    
       <tr><th class="player">TEXT</th><th>TEXT</th></tr>    
       <tr><td class="player"><a>TEXT</a></td><td>TEXT</td></tr>    
       <tr><td class="player"><a>TEXT</a></td><td>TEXT</td></tr>    
       <tr><td class="player"><a>TEXT</a></td><td>TEXT</td></tr>   
       <tr><td class="player"><a>TEXT</a>(<span class="warning">P</span>)</td><td>TEXT</td></tr>      
       <tr><td class="player"><a>DO NOT COUNT THIS TD CELL HAVING SPAN WARNING WITH "S" TEXT</a>(<span class="warning">S</span>)</td><td>TEXT</td></tr>    
      </tbody>    
    </table>
    

1 个答案:

答案 0 :(得分:1)

如果您只想跳过计算包含特定文本的td元素,您可以执行此操作。

Here is a demo

以上小提琴使用以下功能,

$(document).ready(function () {
    var count = 0;
    $("td").each(function () {
       var tdText = $(this).children("span.warning").text();
        if(tdText != "S"){
            count++;
        }
    });
    alert(count);
});

更新1:根据我的理解,您动态生成表格,生成表格后,您需要计算不包含特定文本的td。如果这是您想要的,那么您可以在生成表后使用上述函数,如下所示,

$.get('http://%HOST%/%YEAR%/options?L=%LEAGUEID%&O=06', function (data) {
    $(data).find('td.two_column_layout .report').each(function (index, element) {
        if ($(this).find("td.player").length !== +RequiredStarters && $(this).attr("id") !== "InvalidLineup") {
            var target = $("#InvalidLineup").find("tbody");
            $(this).find("span a").each(function () {
                var className = this.className;
                if (clazz[className]) {
                    return
                }
                clazz[className] = true;
                target.append("<tr class='oddtablerow'><td>" + $(this)[0].outerHTML + "</td><td class='lineupalert'><a class='lineuplink' href='http://%HOST%/%YEAR%/options?LEAGUE_ID=%LEAGUEID%&O=02&%FRANCHISEID%'>Submit Valid Lineup</a></td></tr>");
            });
        }
    });

    //insert the function to count specific td here
    var count = 0;
    $("td").each(function () {
        var tdText = $(this).children("span.warning").text();
        if(tdText != "S"){
            count++;
        }
    });
    alert(count);

});

更新2:

($(this).find("td.player:not(donotcountOUT)").length

donotcountOUT是一个变量,所以我想它应该写成,

($(this).find("td.player:not("+donotcountOUT+")").length

更新3 :您可以使用多个:not()并创建另一个名为donotCountP的变量,并按如下方式使用它,

var donotcountS = 'td.player:contains(S)';  
var donotcountP = 'td.player:contains(P)';

$(data).find('td.two_column_layout .report').each(function (index, element) {
  if ($(this).find("td.player:not("+donotcountS+"):not("+donotcountS+")").length !== +RequiredStarters && $(this).attr("id") !== "InvalidLineup")