我正在尝试将每个数字包裹在一个范围内。
这是我在的地方。
<div class="numbers">12345</div>
<div class="numbers">12345</div>
<div class="numbers">12345</div>
$('.numbers').each(function (index) {
var characters = $(this).text().split("");
$(this).empty();
$.each(characters, function (i, el) {
$(this).append("<span>" + el + "</span");
});
});
语法在哪里出错?
答案 0 :(得分:7)
您可以使用像
这样的简单正则表达式$('.numbers').html(function (i, html) {
return html.replace(/(\d)/g, '<span>$1</span>');
});
演示:Fiddle
或者
$('.numbers').html(function (i, html) {
var chars = $.trim(html).split("");
return '<span>' + chars.join('</span><span>') + '</span>';
});
演示:Fiddle
答案 1 :(得分:4)
this
中的$.each
中的this
与$('.numbers').each
中的$this = $(this);
$this.empty();
$.each(characters, function (i, el) {
$this.append("<span>" + el + "</span");
});
中的{{1}}不同,因此您必须将其保存到变量才能在其中使用。
{{1}}
答案 2 :(得分:0)
this
现在就是你认为的在这里
$(this).append("<span>" + el + "</span");
添加控制台行会显示this
是什么
console.log(this); //String {0: "1", length: 1}
您需要从外部范围获取此内容,将其存储在变量中并引用它。
var elem = $(this);
var characters = elem.text().split("");
elem.empty();
$.each(characters, function (i, el) {
elem.append("<span>" + el + "</span");
});