2012-08-01 63 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