jquery在变量中查找并替换字符串

时间:2012-02-19 17:36:23

标签: jquery replace

我一直在寻找年龄,似乎无法找到我认为是一个非常简单的问题的答案。我已经使用.clone()复制了包含多个表单字段的li,然后我将其插入表单的开头。这很好。

我要做的是找到并替换ROWID变量i的所有实例

<ul class="form">
<li class="hide">
    <ol class="form">
        <li><label for="cat_id_ROWID">Category:</label>
            <select id="cat_id_ROWID" name="cat_id[]">
                <option>...options...</option>
            </select>
        </li>
        <li>
            <label for="value_ROWID">Value:</label>
            <input id="value_ROWID" name="value[]">
        </li>
        <li>
            <label for="description_ROWID">Description:</label>
            <textarea id="description_ROWID" name="description[]"></textarea>
        </li>
    </ol>
</li>
</ul>

任何我的jquery是:

 var newitem = $('li.hide').eq(0).clone();
 newitem.removeClass('hide').addClass('row');
 $(newitem).insertBefore('ul.form li:first');

我正在尝试做$(newitem).replace('ROWID',i);这样的事情,但它不起作用。任何帮助,将不胜感激!感谢。

2 个答案:

答案 0 :(得分:3)

您的newitem变量是一个jQuery对象,而不是字符串,因此简单的.replace将不起作用。您必须在newitem中选择所需的元素,然后分别更改属性( 字符串)。

var $newitem = $('li.hide').eq(0).clone();
$('[for$="ROWID"]', $newitem).each(function () {
    $(this).attr('for', $(this).attr('for').replace('ROWID', i));
});
$('[id$="ROWID"]', $newitem).each(function () {
    $(this).attr('id', $(this).attr('id').replace('ROWID', i));
});
$newitem.removeClass('hide').addClass('row');
$newitem.insertBefore('ul.form li:first');

答案 1 :(得分:2)

新项目是li而不是属性。 尝试这样的事情:

newitem.html(newitem.html().replace("ROWID",i));