最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - add class to parent element if conditions are true - Stack Overflow

programmeradmin4浏览0评论

I am trying to apply a class to a child's parent element if the conditions are true but cannot seem to get it to work. In short, I want to check a table for a cell that is the number "0" and hide its parent row.

I have created a basic jsfiddle of what I have done: /

And the snippet of jquery that I have put together:

if ($('#the_table>table>td:contains("0")').length === 1) {
    $(this).parent("tr").addClass("hidden");
}

I am still learning jQuery and javascript and this is probably something small, but I can't seem to put my finger on it!

Any help would be much obliged, thanks in advance!

I am trying to apply a class to a child's parent element if the conditions are true but cannot seem to get it to work. In short, I want to check a table for a cell that is the number "0" and hide its parent row.

I have created a basic jsfiddle of what I have done: http://jsfiddle/immbudden/YbZPE/3/

And the snippet of jquery that I have put together:

if ($('#the_table>table>td:contains("0")').length === 1) {
    $(this).parent("tr").addClass("hidden");
}

I am still learning jQuery and javascript and this is probably something small, but I can't seem to put my finger on it!

Any help would be much obliged, thanks in advance!

Share Improve this question asked Apr 27, 2012 at 3:08 MichaelMichael 8175 gold badges14 silver badges25 bronze badges 2
  • What exactly do you want to do ? – Ricardo Lohmann Commented Apr 27, 2012 at 3:13
  • find any cells that have the exact number exactly zero (0) in them and hide their parent row – Michael Commented Apr 27, 2012 at 3:16
Add a ment  | 

4 Answers 4

Reset to default 4
$('td', '#the_table > table').each(function() {
    if ($(this).text() === '0') {
        $(this).parents("tr").addClass("hidden");
    }
});

FIDDLE

Use your browser's developer tools! Or Get Firebug.

With that page loaded, try this in the javscript console:

$('#the_table>table>td:contains("0")')

If that gives you

[ ]

then it's not finding any elements. Then you can try breaking it down, for example, see if this works:

$('#the_table>table>td')

And keep taking out and adding bits of that expression until it produces true or false as you require.

you can do it like this,

$('#the_table table td').filter( function (index) {
    return $(this).text() == '0';
}).parent("tr").addClass("hidden");

http://jsfiddle/YbZPE/5/

First you have to get teh cell, if you want the first use eq(0):

$cell = jQuery('#the_table tr td:eq(0)');

then you have to put the class on the parent row:

$cell.parent("tr").addClass("hidden");

The following code will do it.

jQuery('#the_table tr td:eq(0)').parent("tr").addClass("hidden");
发布评论

评论列表(0)

  1. 暂无评论