javascript/jquery::获取文本值?

javascript/jquery::获取文本值?,javascript,jquery,dom,text,Javascript,Jquery,Dom,Text,我有这样一个dom结构: abcdef 我想在单击时从标记获取文本 然而,当使用this.text时,我得到的是abcdef,而不仅仅是abc 我怎样才能只获取的文本值呢 我是否必须这样做,然后对的文本长度执行substr()操作?您可以通过从中获取,而不包含这些子元素,这样做: $("a").click(function() { var text = $(this).clone().children().remove().end().text(); }); .您可以通过从中获取,而不包含

我有这样一个dom结构:

abcdef

我想在单击时从
标记获取文本

然而,当使用this.text时,我得到的是
abcdef
,而不仅仅是
abc

我怎样才能只获取
的文本值呢


我是否必须这样做,然后对
的文本长度执行
substr()
操作?

您可以通过从中获取,而不包含这些子元素,这样做:

$("a").click(function() {
  var text = $(this).clone().children().remove().end().text();
});

.

您可以通过从中获取,而不包含这些子元素,如下所示:

$("a").click(function() {
  var text = $(this).clone().children().remove().end().text();
});
.

另一个选项:

var text = $("a").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
var text = $('a').text().replace($('a span').text(), '');
另一种选择:

var text = $("a").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
var text = $('a').text().replace($('a span').text(), '');

如果这是实际结构(位于
之前的
文本),则可以执行以下操作:

$('a').click(function() {
    var txt = this.firstChild.nodeValue;
});

这将非常快,但同样,它假定文本始终位于第一位,并且不会被其他元素分割。

如果这是实际结构(文本位于
之前),则可以执行以下操作:

$('a').click(function() {
    var txt = this.firstChild.nodeValue;
});

这将非常快,但同样,它假定文本始终排在第一位,并且不会被其他元素分割。

与其使用库遍历dom,不如让浏览器为您执行以下操作:

var string = element.innerText || element.textContent;

这应该适用于所有基于webkit的浏览器,firefox、ie和opera。

与其使用库遍历dom,不如让浏览器为您执行以下操作:

var string = element.innerText || element.textContent;
这应该适用于所有基于webkit的浏览器、firefox、ie和opera。

另一个选项:

var text = $("a").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
var text = $('a').text().replace($('a span').text(), '');
另一种选择:

var text = $("a").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
var text = $('a').text().replace($('a span').text(), '');

我注意到Nick下面的一个是克隆的,因此是一个额外的对象。这个方法也会产生一个额外的对象吗?不,它不会产生一个额外的对象。我注意到Nick下面的方法产生了一个克隆,因此产生了一个额外的对象。这个方法也会生成一个额外的对象吗?不,它不会创建一个额外的对象。这仍然会给你“abcdef”。这仍然会给你“abcdef”。