我是JQuery的新手,需要一些帮助。让我解释一下我想做什么。
这是我的表
<table id="table">
<tr>
<td>
<input type="button" id="btnAdd" name="btnAdd" value="Add">
</td>
</tr>
<tr id="r1" style="display:none">
<td>
<a href="#" onClick="$(this).removeRow();">Delete</a>
</td>
<td>
<select id="ddlCol_1_1" name="ddlCol_1_1">
<option value="">Select Option</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
</td>
<td>
<select id="ddlOp_1_1" name="ddlOp_1_1">
<option value="=">=</option>
<option value=">">></option>
<option value="<"><</option>
<option value="">*</option>
</select>
</td>
<td>
<input type="text" id="cond_1_1" name="cond_1_1" />
</td>
<td>
<select id="ddlConjunction_1_1" name="ddlConjunction_1_1" onChange="checkORCondition(this);">
<option value="And">And</option>
<option value="Or">Or</option>
</select>
</td>
</tr>
</table>
当SELECT drowndown name&#34; ddlConjunction_xxx&#34;在OnChange中,它将调用Javascript函数来复制内部的几列(TD)和元素。到目前为止,这个功能的工作非常精细。这是执行此操作的功能。
function checkORCondition(e)
{
// --- Find the Current Row
var currRow = $(e).closest('tr');
var currRowNum = currRow.index();
var $row = ($(this).closest("tr").length + currRowNum);
$('#table').find("tr:eq(" + $row + ")").each(function() {
var $tds = $(this).children()
//$row = $("<tr></tr>");
$(this).closest("tr").append($tds.eq(1).clone()).append($tds.eq(2).clone()).append($tds.eq(3).clone()).append($tds.eq(4).clone()).appendTo($(this)).closest("tr")
});
}
基本上,我正在处理当前行中的1-4列,因此它变为8列,12列......等等..
我想更改第一组复制列5-8名称的ID /名称,例如来自&#34; ddlCol_1_1&#34;,&#34; ddlOp_1_1&#34;,&#34; cond_1_1&#34;和&#34; ddlConjunction_1_1&#34; ...到...&#34; ddlCol_1_2&#34;,&#34; ddlOp_1_2&#34;,&#34; cond_1_2&#34;和&#34; ddlConjunction_1_2&#34;,然后下一组复制的列9-12是&#34; ddlCol_1_3&#34; ....等等。
希望我澄清一点。请帮忙!
谢谢,
答案 0 :(得分:1)
你的意思是:
var myTbl = $('#table'), count = 1;
myTbl.eq(0).on('change', 'td select.xor', function(){
count += 1;
var tds = [];
var lastTr = $(this).closest("tr");
lastTr.find("td:gt(0):lt(5)").each(function() {
var idArr = ($(this).find('select, input').attr('id')).split('_');
var newId = idArr[0] + '_' + (count)+ '_' + (count);
tds.push($(this).clone()
.find('select, input')
.attr('id', newId)
.prop('name', newId)
.end());
});
lastTr.append(tds);
});
<强> DEMO 强> 你可以根据需要调整它。
答案 1 :(得分:0)
将其缓存为变量。
var $new = $("#ddlCol_1_1").clone();
$new.attr("id", "#ddlCol_1_2");