用jQuery为每一个设置id
用jQuery为每一个设置id
我看到了这样的代码:
$("div").children().andSelf().contents().each(function(){
if (this.nodeType == 3) {
var $this = $(this);
$this.replaceWith($this.text().replace(/(\w)/g, "$&"));
}
});
这里:
wrap each char in except tags with jQuery
现在我尝试给每个span添加一个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, "$&"));
}
});
问题的出现原因是作者想要为每个字母创建一个具有唯一id的标签,但是作者不确定如何实现。
解决方法是使用jQuery的each()方法遍历所有内容,并使用正则表达式将每个字母替换为带有唯一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>"; })); } });
作者还补充说,他不确定每个浏览器是否支持这种形式的Regex.replace方法,但是他在FF3.6和Chrome中进行了测试。
作者进一步解释说,这种形式的写法对他来说也是新的,他刚刚在今天学到了这种方法,但是在网上找不到相关的文档。他认为,对于没有捕获组的正则表达式,第一个参数是匹配的文本,第二个参数是它在原始字符串中的索引。否则,第二个参数就是第一个捕获组,第三个参数是第二个捕获组,以此类推...如果有人知道更多的信息,请告诉作者。
文章整理如下:
这个问题的出现原因是作者想要为每个字母创建一个具有唯一id的标签,但是作者不确定如何实现。
解决方法是使用jQuery的each()方法遍历所有内容,并使用正则表达式将每个字母替换为带有唯一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>"; })); } });
作者还补充说,他不确定每个浏览器是否支持这种形式的Regex.replace方法,但是他在FF3.6和Chrome中进行了测试。
作者进一步解释说,这种形式的写法对他来说也是新的,他刚刚在今天学到了这种方法,但是在网上找不到相关的文档。他认为,对于没有捕获组的正则表达式,第一个参数是匹配的文本,第二个参数是它在原始字符串中的索引。否则,第二个参数就是第一个捕获组,第三个参数是第二个捕获组,以此类推...如果有人知道更多的信息,请告诉作者。