在给定的DIV中,我希望将SPAN应用于所有数字,仅适用于它们。有没有办法用jQuery选择数字?
答案 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);
}
编辑:你们都打字太快了