我一直在寻找年龄,似乎无法找到我认为是一个非常简单的问题的答案。我已经使用.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);
这样的事情,但它不起作用。任何帮助,将不胜感激!感谢。
答案 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));