2011-06-10 51 views
0

我有一個場景,我需要找到所有<td>包含文本「狀態:完整」內已使用JavaScript函數創建的表內。使用Javascript生成的表內jQuery查找元素

頁面<head>包含生成事件日曆標記的腳本。該腳本看起來像這樣(我已刪除了事件插圖的其餘部分):

var today = new Date(); 

loaded('calendarEvents', 'start', today.getFullYear(), '6', '/9#20110716 Saturday 16 July 2011. Academic Only. Status: Full/10#20110730 Saturday 30 July 2011. Academic and General Training. Status: Available/11#20110813 Saturday 13 August 2011. '); 

包含我的文本TD生成的HTML看起來像這樣:

<td class="linkbg" align="center"> 
<b> 
<span onclick="selDate = 20110625; isDate(25,5,2011,22);return false;" title=" Saturday 25 June 2011. Academic and General Training. Status: Full" style="cursor:pointer;color:#FFFFFF">25</span> 
</b> 
</td> 

事實證明,我必須在包含文本「Status:Full」的表格中找到每個<td><b><span>,並將該<td>的背景顏色設置爲紅色。

我認爲做這樣的事情在頁面加載時就已經讓我找到這些<td>秒,但這個不幸的是沒有的情況下(這顯然是一個$(document).ready();內:

$('td span[title*="Status: Full"]').parent().addClass("fullclass"); 

任何人都可以提供一些線索我如何可能做到這一點?

感謝, 特里斯坦

回答

1

:contains僅適用於文本的元素裏,而不是在的Elemen的屬性噸。

所以你需要使用基於屬性的選擇器。嘗試$('td span[onclick*="Status: Full"]')

+0

好,謝謝你們,那肯定會是問題之一!是否通過JavaScript將html添加到DOM的事實不會阻止jQuery使用此方法查找元素>?> – TGuimond 2011-06-10 11:54:45

+0

否。但您必須確保*您的*代碼在元素創建後運行*。在這種情況下,'ready()'有時是不夠的(例如對於使用AJAX構建的頁面)。 – 2011-06-10 12:01:58

1

Status: Full內容是一個屬性,而不是元素內容,所以:contains選擇器不起作用。你可以做一個屬性匹配:

$('td span[title*="Status: Full"]').parent().addClass("fullclass");