用jQuery选择数字

时间:2010-10-30 18:03:20

标签: jquery-selectors

在给定的DIV中,我希望将SPAN应用于所有数字,仅适用于它们。有没有办法用jQuery选择数字?

3 个答案:

答案 0 :(得分:1)

不,jQuery没有为文本节点提供选择器功能......你可以循环遍历.contents()并根据需要操作文本节点,但是jQuery在这里没什么用。

例如:

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

You can test it out here,请注意,此类方法存在缺陷,您更改.innerHTML 会破坏任何事件处理程序,附加行为等。如果内容仅以 文本开头,请使用此项。

答案 1 :(得分:1)

jQuery不为文本提供本机选择器,但可以实现该效果。我根据我对a previous question的回答对此进行了调整,将其设计为不会破坏网址(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);

答案 2 :(得分:0)

你必须使用常规旧的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);
 }

编辑:你们都打字太快了