我有一個DOM結構如下所示:javascript/jquery ::獲取文本值?
<a>abc<span>def</span></a>
我希望得到來自<a>
標籤的文本,當我點擊它。
但是,當使用this.text我得到abcdef
,而不是隻有abc
。
我該如何得到僅僅是<a>
的文本值?
我要不要這樣做,然後做一個substr()
的長度<span>
的文本?
我有一個DOM結構如下所示:javascript/jquery ::獲取文本值?
<a>abc<span>def</span></a>
我希望得到來自<a>
標籤的文本,當我點擊它。
但是,當使用this.text我得到abcdef
,而不是隻有abc
。
我該如何得到僅僅是<a>
的文本值?
我要不要這樣做,然後做一個substr()
的長度<span>
的文本?
另一種選擇:
var text = $("a").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
如果是這樣的實際結構(<a>
文字<span>
之前推出),你可以這樣做:
$('a').click(function() {
var txt = this.firstChild.nodeValue;
});
這將是非常快的,但同樣,它假定文本始終是第一位的,並且它沒有被其他元素分割。
而不是使用庫走DOM,你可以只要求瀏覽器爲你做它:
var string = element.innerText || element.textContent;
這應該在所有基於WebKit瀏覽器,火狐,IE和Opera工作。
這仍然會給你「abcdef」。 – 2010-11-09 09:23:14
另一種選擇:
var text = $('a').text().replace($('a span').text(), '');
我注意到下面尼克的人讓一個克隆,因此額外的對象。這種方法是否也會產生額外的對象? – Hailwood 2010-11-09 01:39:55
不,它不會創建額外的對象。 – 2010-11-09 01:45:53