循环遍历表并添加类

时间:2015-04-20 10:34:00

标签: javascript jquery html

我有一张桌子。我试图获取我的脚本,遍历表格,查找td中是否有任何内容以及.hide()我的按钮(如果有)或.show()是否有& #39;吨

DEMO:Fiddle

然后点击按钮,循环浏览所有td并向其添加一个类。

// <!-- Whether or not to display the button depending if there is anything in each td -->
function Example(column) {
    var rows = $("tr");
    for (var i = 0; i < rows.length; i++) {
        console.log('>><<>><<>><<>><<', column)
        if ($(rows[i]).find("td" [column]).find(".unavailable").length > 0) {
            $('.button-fill').hide();
        } else {
            $('.button-fill').show();
        }
    }
};

// <!-- Fill in the td -->
function bookAllDay() {
    $('.button-fill').click(function () {
        for (var i = 0; i < rows.length; i++) {
            $(rows[i]).find("td" [column]).addClass("active");
        }
    });
};
for (var i = 5 - 1; i >= 1; i--) {
    Example(i);
};

我在jsfiddle中添加了一个非常精简的表格和代码版本。因此,我从工作中抽取的例子中可能缺少一些东西,但我已经尽了最大努力。

谢谢!

3 个答案:

答案 0 :(得分:3)

无需遍历表格。您可以使用:empty伪选择器选择所有没有内容的td

  

:空:选择所有没有子元素的元素(包括文本节点)。

<强>代码:

// Check if there are empty td's
if ($('table').find('td:empty').length) {
    // Show the button, if there is at least one empty td
    $('.button-fill').show();
} else {
    $('.button-fill').hide();
}

您还可以使用toggle缩短代码。

$('.button-fill').toggle($('table').find('td:empty').length);

答案 1 :(得分:2)

更改为:

var row = $(rows[i]);

if (row.find("td"[column]).find(".unavailable").length > 0) {
  row.find('.button-fill').addClass("hide");
} else {
  row.find('.button-fill').removeClass("hide");
}

您选择当前匹配类的页面上的每个按钮。

答案 2 :(得分:1)

您可以使用.each()迭代所有tr和td,:empty选择器可用于检查是否有任何元素为空。请尝试以下工作代码:

$(document).ready(function (){
    $('.button-fill').on("click", function() { 
        var i=$(this).parent().index();

       if($(this).closest("tr").siblings().find("td:eq("+i+")").text()=="")
           $(this).hide();
       else
           $(this).show();    
    });

<!-- Fill in the td -->
    $('.button-fill').on("click", function() {
      var i=$(this).parent().index();
        $(this).closest("tr").siblings().find("td:eq("+i+")").addClass("active");
      //});
  });
});

DEMO UPDATE