2017-04-06 71 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 
} 
相关问题