查找,替换和附加新的dom元素

时间:2014-08-14 18:50:43

标签: javascript jquery html jquery-selectors

我的目标是浏览一个表格并添加一个新的<tr>,其中包含与之前同级相同的数据,但内容文字会有一些更改。

我的html的一部分如下:

<tr>
  <td><label>Share - Spanish</label></td>
  <td><input type="text" id="blog_share_es" name="blog_share_es" size="30" /></td>
</tr>

在我当前的Javascript函数中,$(this)<label>标记。我成功地接受了#34;西班牙语&#34;并替换为&#34;意大利&#34;以下内容:

    var italian = $(this).text().replace("Spanish", "Italian");

然后按如下方式将其附加到表中:

var parentDiv = $(this).parent().parent();
$('<tr><td><label>'+italian+'</label></td><td><input type="text" id="logout_de" name="logout_de" size="30"/></td></tr>').insertAfter(parentDiv);

我现在如何选择<input>并替换&#34; _es&#34;的所有实例。在idname内使用&#34; _it&#34;所以我在html中得到以下输出(获取html的格式不是必要的,但是会是最佳的!):

<tr>
  <td><label>Share - Italian</label></td>
  <td><input type="text" id="blog_share_it" name="blog_share_it" size="30" /></td>
</tr>

3 个答案:

答案 0 :(得分:1)

变成插件

DEMO

(function ($) {
    $.fn.newRow = function (language, suffix) {
        $lastSibling = this.find("tr").last().clone();
        $label = $lastSibling.find("label");
        $labelText = $label.text();
        $label.text($labelText.replace($labelText.substring($labelText.indexOf("- ") + 2), language));
        $input = $lastSibling.find("input");
        $id = $input.attr("id");
        $name = $input.attr("name");
        $input.attr("id", $id.replace($id.substring($id.lastIndexOf("_") + 1), suffix))
              .attr("name", $name.replace($name.substring($name.lastIndexOf("_") + 1), suffix));
        this.find("tbody").append($lastSibling);
        return this;
    };
})(jQuery);

$("#yourTable").newRow("Italian", "it");

答案 1 :(得分:0)

这样的事情......不确定它是否100%有效,但给你正确的方向

$('input[type=text]').each(function(input) {
    if (input.attr('id').match(/_it/))
        input.attr('id', input.attr('id').replace(/_it/, '_es');
    if (input.attr('name').match(/_it/))
        input.attr('name', input.attr('name').replace(/_it/, '_es');
})

答案 2 :(得分:0)

要选择从$(this)开始的输入,您必须使用函数find(),然后您可以使用函数attr()

更改属性
var inp = $(this).parent().parent().find("input[type=text]");
inp.attr("id", inp.attr("id").replace("_es","_it"));
inp.attr("name", inp.attr("name").replace("_es","_it"));