2017-04-06 54 views
1

我有以下代碼:如果TD具有價值:「沒有」添加類不同的TD

<td class="bedrag"> 
    #_ATT{Factuur bedrag} 
</td> 
<td class="paid"> 
    #_ATT{Betaald}{Ja|Nee} 
</td> 

td paid選項可以給出是或我想取決於號改變bedrag背景在td paid中選擇了什麼。我認爲最好的方法是使用Javascript來addClass。所以,我用Google搜索了一段時間,發現這段代碼:

jQuery('a:contains("Sponsored")').closest('.post-item').addClass('sponz'); 

我改變了它適合我的需要:

$('.paid:contains("Nee")').closest('.bedrag').addClass('sponz'); 

但沒有奏效。所以,我想下面的代碼:

$('.paid:contains("Nee")').addClass('sponz'); 

這增加了類sponz到TD paid。但我想將其添加到bedrag。所以我然後試着這個:

('.bedrag:has(.paid:contains("Nee"))').addClass('sponz'); 

但這也沒有奏效。

任何人都知道如何獲得此代碼的工作方式,以便在用戶選擇選項Nee時添加sponztd bedrag?提前致謝!

+0

所以你說DIV,但你的意思是TD? – epascarello

回答

4

closest()不是你所需要的,因爲它尋找父母。 .bedrag.paid一個兄弟姐妹,所以你需要使用prev()代替:

$('.paid:contains("Nee")').prev('.bedrag').addClass('sponz');
.sponz { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td class="bedrag">bedrag 1</td> 
 
    <td class="paid">Nee</td> 
 
    </tr> 
 
    <tr> 
 
    <td class="bedrag">bedrag 2</td> 
 
    <td class="paid">Ja</td> 
 
    </tr> 
 
    <tr> 
 
    <td class="bedrag">bedrag 3</td> 
 
    <td class="paid">Nee</td> 
 
    </tr> 
 
</table>

+0

謝謝!這就是訣竅!我會盡我所能接受你的答案! –

+0

更安全地交換'.siblings'的'.prev'以獲得更健壯的方法來處理html不準確? – Zze

+0

可能,但這裏的含義是元素都在表格的同一行上。如果你確實想使用'siblings()',那麼你可能需要將它與':first'結合起來。 –

1

難道你不能只是做一個if?

if ($('.paid:contains("Nee")').length !== 0) { // there's at least an element 
    // add class to the right element 
}