用jQuery为每一个设置id

22 浏览
0 Comments

用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, "$&"));
        }
    });

0
0 Comments

问题的出现原因是作者想要为每个字母创建一个具有唯一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中进行了测试。

作者进一步解释说,这种形式的写法对他来说也是新的,他刚刚在今天学到了这种方法,但是在网上找不到相关的文档。他认为,对于没有捕获组的正则表达式,第一个参数是匹配的文本,第二个参数是它在原始字符串中的索引。否则,第二个参数就是第一个捕获组,第三个参数是第二个捕获组,以此类推...如果有人知道更多的信息,请告诉作者。

0