2014-03-05 127 views
0

最近 - 我張貼在SO這個問題:Highlight rows in a html table with selected value父()功能不起作用

我已經生成的HTML表格,並應強調與小區的相同值的所有行的JS功能「coversationid」

這裏是小提琴的例子偉大的工程:http://jsfiddle.net/sa4ED/

但是,如果我相同的代碼應用到我的代碼,它突然停止工作,我似乎無法找出爲什麼......

HTML/JSP(sho RT版本):

<tbody> 
    <c:forEach var="message" items="${messages}"> 
     <tr> 
     <td class="time"><c:out value="${message.timestamp}" /></td> 
     <td class="sender"><c:out value="${message.sender}" /></td> 
     <td class="receiver"><c:out value="${message.receiver}" /> 
     </td> 
     <td class="message"><c:out value="${message.shorterVersion()}" /></td> 
     <td class="conversationid"><c:out value="${message.conversationid}" /></td> 
     </tr> 
    </c:forEach> 
</tbody> 

有鏈接的其他地方,其觸發的亮點功能:

<a href="#"onclick="highlight('${message.conversationid}');">highlight</a> 

JS:

function highlight(value) { 
    $(".conversationid").filter(function() { 
     return $(this).html() == value; 
    }).parent().css('background', "red"); 
} 

當我點擊這個功能,它什麼都不做。

我知道,亮點功能被調用的一切,如果我刪除parent()部分,它的工作原理和所有與我期望的conversationId值的單元格得到強調。但是,我希望整行都突出顯示。所以它確實沒有parent(),但沒有它。

爲什麼?很顯然,parent()呼籲<td>應該返回在這種情況下是<tr>父母,對吧?哪裏不對?感謝您非常的調試任何幫助......

CSS(精簡版):

table.pretty tbody tr.odd td { 
    background: #FFFEFE; 
} 

table.pretty tbody td { 
    text-align: left; 
    background: #E1E9FF; 
} 
+0

我相信問題來自造型,而不是代碼。也許你在'​​'元素上有'背景'規則,這些元素覆蓋了你可能在父''上設置的任何東西。 –

+0

你能舉一個你的例子嗎?/ – putvande

+0

這可能是原因......我會在這裏張貼我的CSS - 你可以看看它嗎?我認爲它是這樣工作的:上次觸發的樣式被應用,但它可能不會像這樣... – Smajl

回答

1

更改td背景爲透明。

function highlight(value) { 
    $(".conversationid").filter(function() { 
     return $(this).html() == value; 
    }).css('background','transparent').parent().css('background', "red"); 
} 
1

試試這個

$(".conversationid").filter(function() { 
     return $(this).html() == value; 
    }).closest('tr').find('td').css('background', "red"); 
+0

謝謝,但它不工作: -/ – Smajl

+0

@Smajl,現在嘗試編輯的一個! – rps

1

使用父()找到( 'TD')。而不僅僅是parent()。 你已經在CSS中聲明瞭td背景顏色,它覆蓋了tr的背景顏色。

function highlight(value) { 
    $(".conversationid").filter(function() { 
     return $(this).html() == value; 
    }).parent().find('td').css('background', "red"); 
}