Выбор номеров с помощью jQuery - PullRequest
2 голосов
/ 30 октября 2010

В данном DIV я хочу применить SPAN ко всем номерам и только к ним. Есть ли способ выбрать номера с помощью jQuery?

Ответы [ 3 ]

1 голос
/ 30 октября 2010

jQuery не предоставляет собственные селекторы для текста, но этого можно добиться.Я адаптировал это из моего ответа к предыдущему вопросу , создав его так, чтобы он не искажал ссылки с номерами в URL ( jsFiddle demo ):

function autospan() {
    var exp = /-?[\d.]+/g;

    $('*:not(script, style, textarea)').contents().each(function() {
        if (this.nodeType == Node.TEXT_NODE) {
            var textNode = $(this);
            var span = $('<span/>').text(this.nodeValue);
            span.html(span.html().replace(exp, '<span class="foo">$&</span>'));
            textNode.replaceWith(span);
        }
    });
}

$(autospan);
1 голос
/ 30 октября 2010

Нет, jQuery не предоставляет функции селектора для текстовых узлов ... вы можете циклически перемещаться по .contents() и манипулировать текстовыми узлами, как хотите, но jQuery здесь не сильно поможет.

Например:

$("div").html(function() { 
  return $(this).text().replace(/(\d+)/g,"<span>$1</span>"); 
});

Вы можете проверить это здесь , обратите внимание, что у любого подхода, подобного этому, есть недостатки, вы меняете .innerHTML, который уничтожит все обработчики событий, прикрепленные поведения и т. д. Используйте эту функцию только в том случае, если для начала используется только текст .

0 голосов
/ 30 октября 2010

Вы должны использовать обычный старый JavaScript.Возможно, используйте регулярное выражение, чтобы найти все числа и заменить их тегами span, обернутыми вокруг них.

var str = "some text 123"
str = str.replace(/(\d+)/g, "<span>$1</span>");

вы бы заменили "str" ​​содержимым некоторых элементов.Допустим, вы хотите сделать это для всех

элементов на вашей странице

$('p').each(function(){ 
    var str = $(this).text();
    str = str.replace(/(\d+)/g, "<span>$1</span>"); 
    $(this).text(str);
 }

edit: вы все печатаете слишком быстро

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