2011-06-10 49 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");