使用JQuery访问div标签中的子项

时间:2011-08-25 04:34:47

标签: jquery children

我有以下代码。如果我没有表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>

4 个答案:

答案 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;
}