我有一个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