我有以下'td'element,並且想要讀出字符串部分(單元格1),但沒有'span'部分,我該如何在jQuery中做到這一點?如何只讀取字符串並忽略JQuery中的其他元素
<td class="myTable">cell 1<span class='end'> </span></td>
謝謝。
我有以下'td'element,並且想要讀出字符串部分(單元格1),但沒有'span'部分,我該如何在jQuery中做到這一點?如何只讀取字符串並忽略JQuery中的其他元素
<td class="myTable">cell 1<span class='end'> </span></td>
謝謝。
這裏有一個通用的解決方案,將做到這一點不難看的正則表達式的污穢:-)
var text = $('.myTable').clone()
.children()
.detach()
.end()
.text();
編輯1:
或者,如果您確定<span>
將始終只包含som空格字符電子排序 - 您可以使用.text()
後跟一個.trim()
,像這樣:
$.trim($('.myTable').text());
編輯2:
只是爲了多打一些,這裏的另取一個通用的解決方案,不很大程度上涉及jQuery,因此效率更高。目前我真棒.readStringOnly()
插件:
$.fn.readStringOnly = function() {
var nodes = this[0].childNodes,
text = '';
for (var i=0, item; (item = nodes[i]); i++) {
if (item.nodeType == 3) { // text node!
text += item.nodeValue;
}
}
return text;
};
// Usage:
// var text = $('.myTable').readStringOnly();
這基本上是第一個解決方案確實在純jQuery方法有什麼,但是因爲jQuery提供了文本節點處理一個被留下了兩個相當不錯的選擇不支持:低效的jQuery代碼,或者這種體積龐大的W3C-DOM流行度。 (一樣好我做了一個插件出來的。)
...
再說,你總是可以只使用一個正則表達式有人已經建議。 :-)
@Mar然而,非常低效。 =(至少,你應該把detach()替換成remove()。detach()將信息保存在dom中......並且他的問題表明他想要除掉所有的子內容 – 2011-03-17 23:10:54
'.detach )''就足夠了''.clone()'不會默認克隆數據或事件,相比之下效率低下嗎?當然,這是一個非常通用的解決方案,用於解決這個問題 – 2011-03-17 23:15:26
@Mar直到你到達Jquery 1.4 +文檔摘錄:通常,綁定到原始元素的任何事件處理程序都不會複製到克隆中。可選的withDataAndEvents參數允許我們改變這種行爲,而且也將所有事件處理程序的副本綁定到元素的新副本。 ----從jQuery 1.4開始,所有元素數據(通過.data()方法附加的)也被複制到新副本.--- – 2011-03-17 23:17:54
var tableContents = $(".myTable").text();
剛剛測試過,這確實有效。示例頁面:
<html>
<head>
<script type="text/javascript" language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert($(".myTable").text());
});
</script>
</head>
<body>
<table>
<tr>
<td class="myTable">cell 1<span class='end'> </span></td>
</tr>
</table>
</body>
</html>
這也將返回範圍標記內的所有內容,在這種情況下是 字符。 – 2011-03-17 23:03:58
.text()將不起作用,它返回:單元格1(然後一些時髦的代碼,因爲Firefox顯示 有問題)。與.html()我可以看到它打印出來:單元格1 。我更多地進入.remove()或.empty()來擺脫span元素之前,我呼籲.text(),但似乎不會'工作要麼.... – ohana 2011-03-17 23:10:52
$(".myTable").html().replace(/<span.*<\/span>/gi, "")
如果是跨度的情況下,我會得到upvote標記是她想要刪除的td中唯一總是存在的東西。否則,它不完整。 – 2011-03-17 23:15:13
span標籤內部的信息可以變化嗎?或者它總是遵循這種模式與span標籤的內容? – 2011-03-17 23:09:54