javascript / jquery :: получить текстовое значение? - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть такая структура dom:

<a>abc<span>def</span></a>

Я хочу получить текст из тега <a> при нажатии на него.

Однако, используя this.text, я получаю abcdef вместо abc.

Как бы я мог получить текстовое значение только <a>?

Я собираюсь сделать это так, а затем сделать substr() до длины текста <span>?

Ответы [ 5 ]

3 голосов
/ 09 ноября 2010

Другой вариант:

var text = $("a").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
2 голосов
/ 09 ноября 2010

Вы можете сделать это, получив .text() от .clone() без этих дочерних элементов, например:

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

Вы можете проверить это здесь .

0 голосов
/ 28 января 2011

Другой вариант:

var text = $('a').text().replace($('a span').text(), '');
0 голосов
/ 09 ноября 2010

Вместо того, чтобы использовать библиотеку для прогулок, вы можете просто попросить браузер сделать это за вас:

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

Это должно работать во всех браузерах на основе webkit, firefox, т.е.1004 *

0 голосов
/ 09 ноября 2010

Если это фактическая структура (текст <a>, предшествующий <span>), вы можете сделать это:

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

Это будет очень быстро, но опять же, предполагается, чтотекст всегда стоит первым и не сегментируется другими элементами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...