使用 jQuery 选择数字

发布于 2024-09-30 06:31:40 字数 64 浏览 3 评论 0原文

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

In a given DIV I wish to apply a SPAN to all numbers and only them. Is there a way to select numbers with jQuery ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋心╮凉 2024-10-07 06:31:40

jQuery 不提供本地文本选择器,但可以实现这种效果。我根据我对 上一个问题的回答改编了此内容,将其设计为不会破坏 URL 中带有数字的任何链接(jsFiddle 演示) :

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">
amp;</span>'));
            textNode.replaceWith(span);
        }
    });
}

$(autospan);

jQuery doesn't provide native selectors for text, but it is possible to achieve that effect. I adapted this from my answer to a previous question, designing it to not mangle any links with numbers in the 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">
amp;</span>'));
            textNode.replaceWith(span);
        }
    });
}

$(autospan);
纸伞微斜 2024-10-07 06:31:40

不,jQuery 不提供针对文本节点的选择器功能...您可以循环遍历 .contents() 并根据需要操作文本节点,但 jQuery 在这里没有多大帮助。

例如:

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

您可以在此处进行测试,请注意,任何此类方法都有缺点,您更改.innerHTML,这将破坏所有事件处理程序、附加行为等。仅当内容文本时才使用此选项首先。

No, jQuery provides no selector functionality against text nodes...you can loop through the .contents() and manipulate textnodes as you want, but jQuery won't help much here.

For example:

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

You can test it out here, note that there are drawbacks to any approach like this, you're changing the .innerHTML which will destroy any event handlers, attached behaviors, etc. Only use this if the content is only text to begin with.

撩心不撩汉 2024-10-07 06:31:40

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

编辑中的所有元素执行此操作:您都输入太快

You'd have to use regular old javascript. Perhaps use a regular expression to find all numbers and replace them with span tags wrapped around them.

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

you'd replace "str" with the contents of some elements. So let's say you wanted to do this over all

elements in your page

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

edit: you all type too fast

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文