我有以下代码。如果我没有表tr td标签,我可以访问输入和单选框。通过输入和单选按钮,我使用eq(x)。 x是数字。
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);
newElem.children(:eq(0)').attr('id', 'frmBuyerComments_RsnCode' + newNum).attr('name', 'frmBuyerComments_RsnCode' + newNum);
newElem.children(':eq(1)').attr('id', 'frmBuyerComments_money' + newNum).attr('name', 'frmBuyerComments_RadioGroup' + newNum);
newElem.children(':eq(2)').attr('id', 'frmBuyerComments_percentage' + newNum).attr('name', 'frmBuyerComments_RadioGroup' + newNum);
但我不知道在添加表标签时如何访问它们。这是html代码。 如何使用newElem.children()
使用newElem.children()进行访问,如上所示<div id="inputForm">
<div id="input1" style="margin-bottom:4px;" class="clonedInput">
<table cellspacing="0" cellpadding="2" width="100%" style="margin:10px 0px 0px 0px;" id="TableReasonCode">
<tr>
<td width="25%">Reason Code</td>
<td class="_CommentsData"><select id="frmBuyerComments_RsnCode1" runat="server"></select></td>
</tr>
<tr>
<td width="25%">Symbol</td>
<td class="_CommentsData"><input type="radio" id="frmBuyerComments_money1" name="frmBuyerComments_RadioGroup1" value="$" checked="checked" />$ <input type="radio" id="frmBuyerComments_percentage1" name="frmBuyerComments_RadioGroup1" value="%" /> %</td>
</tr>
</table>
<%--Reason Code : <select id="frmBuyerComments_RsnCode1" runat="server"></select>
Denominator : <input type="radio" id="frmBuyerComments_money1" name="frmBuyerComments_RadioGroup1" value="$" checked="checked" />$ <input type="radio" id="frmBuyerComments_percentage1" name="frmBuyerComments_RadioGroup1" value="%" /> %--%>
</div>
<div>
<input type="button" id="btnAdd" class="_Buttons" onclick="AddExtraField()" value="More Reason Code" />
<input type="button" id="btnDel" class="_Buttons" onclick="RemoveExtraField()" value="Remove Reason Code" />
</div>
<table cellspacing="0" cellpadding="2" width="100%" style="margin:10px 0px 0px 0px;" id="TableOtherInputs">
<tr>
<td width="25%">Comments</td>
<td class="_CommentsData"><textarea rows="4" cols="24" id="frmBuyerComments_ByerComments" name="frmBuyerComments_ByerComments"></textarea></td>
</tr>
<tr>
<td class="_CommentsLabel"></td>
<td class="_CommentsData"></td>
</tr>
</table>
</div>
答案 0 :(得分:2)
如果你只是试图控制新项目中的输入,那么:
$('#input'+newNum).find('select')
$('#input'+newNum).find('input[type="radio"]')
但是,我猜这不适合你,因为你实际上在$(document).ready调用中做了一些事情,而这些东西还不存在。是这种情况吗?
答案 1 :(得分:0)
这是因为你特意告诉jquery挑选第一个孩子。相反,你应该告诉它让第一个孩子成为输入框(或选择)
newElem.children('select:eq(0)'); //first select box
newElem.children('input:eq(0)'); //first input box
答案 2 :(得分:0)
我不会使用.children,而是使用.find和一些用于选择器的jQuery扩展形式。
http://api.jquery.com/category/selectors/
等等 newElem.find('....按类或id插入选择器或类似:radio')
你发布的小样本有点难以给出更详细的答案。
答案 3 :(得分:0)
您可以为您的功能尝试此代码:
var num = 1;
function AddExtraField(){
var old="div#input"+num;
var newNum = num+1;
var newElem = $(old).clone();
$(newElem).attr('id', 'input' + newNum);
$(newElem).appendTo($(old));
$("#frmBuyerComments_money"+num, newElem)
.attr("id","#frmBuyerComments_money"+newNum)
.attr('name', 'frmBuyerComments_RadioGroup' + newNum);
$("#frmBuyerComments_percentage"+num, newElem)
.attr("id","#frmBuyerComments_percentage"+newNum)
.attr('name', 'frmBuyerComments_RadioGroup' + newNum);
$(newElem).effect('highlight',{},1000,function(){});
++num;
}