如何替换<li>标签</li>的内容

时间:2011-07-22 17:12:59

标签: jquery html

我在这里很新,刚刚发现了jQuery。 我有一个清单:

<ul id="tagcloud">
    <li>Strategic Planning Process,Preparing for Changes,</li>
    <li>Effective,Enrollment Managers,Effective Enrollment Managers,</li>
    <li>Enrollment Program,</li>
    <li>Next Generation,Diversity,Future enrollment,</li>
    <li>Annual Admissions Plan,</li>
</ul>

现在,我想要做的是,用</li><li>基本上替换所有“,”,当然,摆脱最后一个“,”不要空<li> 我想它会是这样的:

$('pre').html(function() {
   return this.innerHTML.replace(",", "</li><li>");
});

但它不起作用。我可能错了......

2 个答案:

答案 0 :(得分:6)

$('pre')选择pre元素。此外,replace [docs]仅替换字符串的第一个出现,除非提供带有全局标志的正则表达式。

我猜你想要

$('#tagcloud').html(function(i, html) {
    return html.replace(/,/g, "</li><li>");
});

DEMO

或者,要不创建空的li元素(如果逗号位于末尾会发生这种情况),您只能使用文本:

$('#tagcloud').html(function(i, html) {
    return '<li>' + $(this).text().replace(/,/g, '</li><li>') + '</li>';
    // or
    // return '<li>' + $(this).text().split(',').join('</li><li>') + '</li>';
});

DEMO


进一步阅读:

答案 1 :(得分:0)

Felix Kling的回答是用逗号替换列表项,但确实避免从最后一项的无关结束逗号创建空元素。此外,直接编辑HTML(使用DOM元素的innerHTML属性)可能比使用DOM操作函数更快,但AFAIK并不总是可靠/兼容(这里提到的简短示例http://api.jquery.com/html/),我建议使用元素。

尝试类似:

$('#tagcloud').each(function() {
    var text = $(this).text();         
    if(text.substr(text.length - 1) == ',') {
       $(this).text(text.substr(0, text.length - 2));
    }

    var items = text.split(',');
    if(items.length > 1) {
        $(this).text(text.substr(0, text.indexOf(',') - 1);
        var newItems = [];

        for(i = 1; i < items.length; i++) {
            var newItem = document.createElement("li");
            $(newItem).text(items[i]);
            newItems.push(newItem);
        }
        $(this).after($(newItems));
    }
 }

只是把它写在我的头顶,但这样做是检查列表项的文本的最后一个字符是否是逗号,在这种情况下它被删除。然后创建一个由逗号分隔的文本数组,如果有任何额外的列表项要创建,它会将项目的文本剪切到第一个项目。然后,它从要创建的其余文本项构建DOM元素数组,并在第一个列表项后面插入它们。