jQuery text () фильтрует результаты перед передачей другому элементу

0

Ниже приведен упрощенный отрывок из моего кода:

$('a').on('click', function()
{
    // Get the text from the link
    var textIwantToUse = $(this).text();

    // Set the elements text to that of the link
    $('elementIwantToPassTheTextTo').text(textIwantToUse);
}

Проблема у меня есть ссылка содержит span с некоторым текстом я не хочу:

<a href="#">I want this text <span>but not this</span></a>

Как удалить текст в теге span перед тем, как передать его целевому элементу?

Спасибо заранее.

Теги:
filter
text

5 ответов

2
Лучший ответ

используйте .contents() и .filter чтобы выбрать только текстовые узлы, затем возьмите текст из них:

var txt = $('a').contents().filter(function () {
    return this.nodeType === 3;
}).text();

$('elementIwantToPassTheTextTo').text(txt);

Пример: http://jsfiddle.net/S95Ls/

1

Очистка html-тега:

var textIwantToUse = $(this).html().replace(/<span>.*<\/span>/ig, '');
1

Если вы получите html, чтобы он включал теги <span> вы можете разделить на него и использовать все до него.

var textIwantToUse = $(this).html().split('<span>')[0];
0

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

$(this).find('spam').html('');

Это приведет к удалению текста в элементе span или вы также можете удалить весь элемент span, если хотите:

$(this).remove('span')

то делай еще то, что тебе нравится...

var textIwantToUse = $(this).text();
var textIwantToUse = $(this).html();
// or whatever you want to do with it
0

Пытаться:

$('a').on('click', function () {
    var textIwantToUse = $(this).html();
    $('.elementIwantToPassTheTextTo').html(textIwantToUse);
    $('.elementIwantToPassTheTextTo').find("span").remove();
});

ДЕМО здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню