jQuery隐藏基于前一行td值的元素

时间:2011-11-20 07:12:54

标签: jquery

我有一张这样的表:

<table>
    <tr>
        <td>
            <a href="/payinvoice/1">Pay Invoice 1</a>
            <span class="paid hidden">False</span>
        </td>
    </tr>
    <tr>
        <td>
            <a href="/payinvoice/2">Pay Invoice 2</a>
            <span class="paid hidden">False</span>
        </td>
    </tr>
</table>

如果前一行td中的跨度值为False,我需要隐藏Pay Invoice 2链接。

我想出了这个:

$('span.paid').each(function () {
    if ($(this).prev("span.paid").text() == "False") {            
        $(this).prev("a").addClass("hidden");
    }
});

但它不起作用。有小费吗?谢谢!

4 个答案:

答案 0 :(得分:1)

$('span.paid').each(function() {
    var $this = $(this);
    if ($.trim($this.closest('tr').prev('tr').find('span.paid').text()) == 'False') {            
        $this.prev('a').addClass('hidden');
    }
});

答案 1 :(得分:1)

Here您正在寻找的内容:

$('span.paid').each(function () {
    var prev = $(this).parents('tr').prev().find('span.paid').text();
    if (prev=='False') {            
        $(this).prev().hide();
    }
});

首先,我们将文本设置为prev变量以用于组织目的。

我们首先找到保存函数tr的{​​{1}}元素并选择之前的span.paid。我们在tr中搜索span.paid,获取其文字,并将其与tr函数中的字符串'False'相匹配。

大解释,但结果很简单。

答案 2 :(得分:1)

  $('span.paid').each(function () {
      if ($(this).parents('tr').prev().find("span.paid").text() === "False") {            
          $(this).prev("a").addClass("hidden");
      }
  });

答案 3 :(得分:1)

试试这段代码,

$('tr').each(function() {
    if ($("span.paid", $(this)).text() == "False") {
        $("a", $(this).next('tr')).addClass("hidden");
    }
});

Working sample