我看到了这个:
$("div").children().andSelf().contents().each(function(){
if (this.nodeType == 3) {
var $this = $(this);
$this.replaceWith($this.text().replace(/(\w)/g, "<span>$&</span>"));
}
});
这里: wrap each char in except tags with jQuery
现在我尝试给每个范围一个id,但他们最终都拥有相同的id。 但是,登录到控制台的索引是不同的。
$("#content").children().andSelf().contents().each(function(index){
console.log(index);
if (this.nodeType == 3) {
var $this = $(this);
$this.replaceWith($this.text().replace(/(\w)/g, "<span id="+index+">$&</span>"));
}
});
答案 0 :(得分:0)
此answer可能对您有用。
如果你想要一个跨度中的每个字母,每个字母都是一个唯一的id,这就是它的完成方式:
$("#content").children().andSelf().contents().each(function(index){
if (this.nodeType == 3) {
var $this = $(this);
$this.replaceWith($this.text().replace(/\w/g, function(text,index2) {
return "<span id="+index+""+index2+">" + text + "</span>";
}));
}
});
Obs。:我不确定每个浏览器都支持Regex.replace
这种形式。使用FF3.6和Chrome进行测试。
澄清一点:这个表格对我来说也是新的,今天刚学到,但在网上找不到相关文档。看来,对于正则表达式没有捕获组,第一个参数是匹配的文本,第二个参数是原始字符串中的索引。否则,第二个参数成为第一个被捕获的组,我假设第三个参数是第二个参数。等等......如果有人知道在哪里可以找到更多信息,我也对此感兴趣。