2012-08-01 57 views
3

我试图找到含有“字段名=”所有的表格单元格。我的getElementsByTagName这样做最初,随后通过的indexOf测试循环,它工作得很好,得到191个细胞,然后成功地完美测试我的靶细胞。jQuery选择含有不工作

我然后用$( “TD:包含( '字段名')”),试了一下;并失败。我尝试了反斜杠的等号,双反斜杠,甚至删除它,我仍然得到零点击。这种情况是正确的,因为它与indexOf协同工作,无需转换为UC或LC。

帮助! :-)严重的是,标准的JS工作,所以我会好起来的,但它真的令人沮丧,不能使用这样一个很酷的工具,不知道为什么。这里是我的代码 - 评论并取消看到这两种方法的结果:

//var cells = document.getElementsByTagName("td"); 
var cells = $("td:contains('FieldName\=')"); 
alert(cells.length); 
for (var i = 0; i < cells.length; i++) { 
    if (cells[i].innerHTML.indexOf('FieldName=') > -1) { 
     // do stuff here... 
    } 
} 

我敢肯定,当有人察觉了我的错误,我会觉得很傻,但这是我们学习的,不是吗? :-)

的取样盒:

 <TD valign="top" class="ms-formbody" width="400px"> 
    <!-- FieldName="Title" 
     FieldInternalName="Title" 
     FieldType="SPFieldText" 
     --> 
     <span dir="none"> 
    <input name="ctl00$m$g_c2ed1f85_8eef_4759_817c_cd68435bd0a3$ctl00$ctl04$ctl00$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_c2ed1f85_8eef_4759_817c_cd68435bd0a3_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Title" class="ms-long" /><br> 
</span> 


    </TD> 
+1

得到了HTML方便?有助于加速:) – CraftyFella 2012-08-01 12:45:47

+0

此外,提及您使用的jQuery版本... – Vishal 2012-08-01 12:46:59

+0

jquery-1.5.1.min.js – Charlie 2012-08-01 12:55:41

回答

3

我看到这里的问题是此行的区别:

cells[i].innerHTML 

和方式:contains作品。 :contains搜索一个文本字符串。它会忽略你的HTML评论。

innerHTML正在工作的原因是因为它返回所有内容作为字符串,:contains将仅返回在此元素和子元素的innerText中找到的字符串。

你仍然可以结合使用jquery与纯JS来完成,像这样的目标:

$("td").each(function() { 
    // var this is the current element's DOM object 
    if (this.innerHTML.indexOf("FieldName") != -1) { 
     // do stuff 
    } 
}); 
+0

有趣!在API中没有提及这一点。如果不将它们视为单元格文本的一部分,您是否知道测试HTML注释的简单方法? – Charlie 2012-08-01 13:08:47

+0

刚刚编辑了一个新的方法 – Austin 2012-08-01 13:09:35

+0

酷!你的样品非常有意义 - 谢谢! – Charlie 2012-08-01 13:19:14

0

您的代码应该工作...记得包含是区分大小写的,会是你的问题?

出现在当时的HTML的JavaScript执行?

+0

这应该被写为对问题的评论,而不是回答。答案并不意味着提出问题。 – Austin 2012-08-01 12:55:55

+1

本来如果我能......新来的 – Shikyo 2012-08-01 12:56:41

+0

没有问题。 Downvote删除,只记得下次。 – Austin 2012-08-01 12:57:26