动态添加新元素并更改其内容

时间:2015-03-20 11:59:10

标签: javascript jquery html regex

我希望"复制" 某些元素并使用 regex 更改其中的部分文字。

到目前为止一切顺利:( / w work fiddle - http://jsfiddle.net/8ohzayyt/25/

$(document).ready(function () {
    var divs = $('div');
    var patt = /^\d\./;
    var match = null;
    for (i = 0; i < divs.length; i++) {
        match = ($(divs[i]).text().match(patt));
        $(divs[i]).text($(divs[i]).text().replace(match[0], "5."));
    }
});

HTML

<div>1. peppers</div>
<div>2. eggs</div>
<div>3. pizza</div>

这完全按我想要的方式工作,但我想动态添加一些内容,但是当我尝试更改复制的divs的内容时,没有任何反应。

请参考这个小提琴: http://jsfiddle.net/8ohzayyt/24/

我已经提出了一些意见,以便更清楚我想要实现的目标。

2 个答案:

答案 0 :(得分:2)

我认为你的问题是你没有将一个元素传递给你的changeLabel函数,而只是一个字符串。

请看这个解决方案:http://jsfiddle.net/8ohzayyt/26/

以下是我为改进代码而更改的行:

var newContent = $("<hr/><div id='destination'>" + $("#holder").html() + "</div>");

我刚刚将您的HTML包装在$()中。这会从字符串中创建一个元素。

答案 1 :(得分:1)

尝试:

var newContent = $("<hr/><div id='destination'>" + $("#holder").html() + "</div>");

修改 简要说明我做了什么。

为了使$(el).find('div');工作changeLabel()需要一个元素。不是将newContent作为字符串传递,而是将其作为使$(el).find('div');工作的元素传递。