首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为H3的ID的H3的内容

作为H3的ID的H3的内容
EN

Stack Overflow用户
提问于 2012-07-23 21:24:29
回答 2查看 1.4K关注 0票数 3

我需要获取<h3></h3>的内容,然后将内容小写,删除空格(用-或_替换),然后将它们注入到<h3>的ID中。

举个例子..。

代码语言:javascript
复制
<li class="widget-first-list"><h3>About This Stuff</h3></li>
<li class="widget-first-list"><h3 id="about-this-stuff">About This Stuff</h3>

这应该存在于页面上的h3s负载中,所以它需要在某个地方包含'$this‘。

希望这是有意义的--我对jQuery没意见,但这给我带来了一些问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-23 21:27:57

由于您指定了jQuery,因此您可以执行以下操作:

代码语言:javascript
复制
$("h3").each(function() {
    var me = $(this);
    me.attr("id",me.text().toLowerCase().replace(/[^a-z0-9-]/g,'-').replace(/--+/g,'-'));
});

这将用-替换所有非字母数字字符,然后删除多个连续的-字符。

在普通的JS中(效率高得多):

代码语言:javascript
复制
(function() {
    var tags = document.getElementsByTagName("h3"), l = tags.length, i;
    for( i=0; i<l; i++) {
        tags[i].id = tags[i].firstChild.nodeValue.toLowerCase().replace(/[^a-z0-9-]/g,'-').replace(/--+/g,'-');
    }
})();

更好的是,检查重复项:

代码语言:javascript
复制
(function() {
    var tags = document.getElementsByTagName("h3"), l = tags.length, i, newid, n;
    for( i=0; i<l; i++) {
        newid = tags[i].firstChild.nodeValue.toLowerCase().replace(/[^a-z0-9-]/g,'-').replace(/--+/g,'-');
        if( document.getElementById(newid)) {
            n = 1;
            do {n++;}
            while(document.getElementById(newid+'-'+n));
            newid += '-'+n;
        }
        tags[i].id = newid;
    }
})();
票数 8
EN

Stack Overflow用户

发布于 2012-07-23 21:30:42

一种解决方案:

代码语言:javascript
复制
$("h3").each(function() {

    var content = $(this).html().replace(/ /g,'_').toLowerCase();
    $(this).attr("id",content);

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11613435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档