2016-06-15 168 views
0

我有沒有td/th-id的/類的表,我通過表循環獲取td:s的數據。如果沒有數據或數據是:「 - 」,那麼我在該td上設置一個CSS類。像這樣:匹配兩個數組與條件

$('.simpletable td').each(function() { 
if($(this).text() === '-') 
    { 
    $(this).addClass("nodata"); 
    } 
}); 

但是我需要匹配'td'和相應的'th'來設置相同的CSS類。我爲th陣列取數組:

$('.simpletable th').each(function() 
{ 
    tableheaders.push($(this).text()); 
}); 

有沒有人知道如何實現這個目標?或者,如果我從頭開始,是否有更簡單的方法來完成這一切?

此表有幾行'th',所以我不能真正做任何與列。

MARKUP HTML:

<table class="simpletable"> 
<thead> 
    <th>th1</th> 
    <th>th2</th> 
    <th>th3</th> 
</thead> 
<tbody> 
    <tr> 
     <td>data 1</td> 
     <td>-</td> 
     <td>data 3</td> 
    </tr> 
<thead> 
<th>th4</th> 
<th>th5</th> 
<th>th6</th> 
</thead> 
<tr> 
    <td>data 4 row 2</td> 
    <td>-</td> 
    <td>data 6 row 2</td> 
</tr> 
</tbody> 

+1

有一對夫婦你可以做的事情。首先,爲了解決你的* immediate *問題,你可以使用':eq()'選擇器和'index()'函數。 'var index = $(this).index();',那麼對於你的$'('th:eq('+ index +')''將選擇與'td相同的列'th' '其次,有一個'text'選擇器這樣的東西:https://api.jquery.com/text-selector/ - 你可以像這樣使用它:'$('。simpletable td [text (',它只會選擇文本等於'='的單元格 –

+0

@ᾠῗᵲᄐᶌ您應該取消刪除您的答案,事實證明這是正確的,因爲問題的澄清 – Barmar

回答

1

你必須捕捉td的索引,然後使用.filter()能得到相應的th具有相同的列索引

$('.simpletable td').each(function() { 
if($(this).text() === '-') 
    { 
    $(this).addClass("nodata"); 
    var ind = $(this).index(); // get td index relative to it's row 
    $('.simpletable th').filter(function(i,v){ 
     return $(v).index() == ind; // only return th with same column index as the td 
    }).addClass('nodata'); 
    } 
}); 
+1

你確定關於'i'嗎?如果有多行 - 或者它是給定'tr'的上下文中的索引,是不是會返回錯誤的值? –

+0

啊是的 - 你是對的。大聲笑沒有正確思考 –

+1

這確實有竅門!非常感謝你@ᾠῗᵲᄐᶌ – Tess