2011-08-25 6 views
1

私は以下のコードを持っています。私はテーブルとタグのタグを持っていない場合、入力とラジオボックスにアクセスすることができます。入力とラジオボタンだけで、私はeq(x)を使います。 xは数字です。divタグの子にJQueryを使ってアクセス

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> 

答えて

2

あなただけの、あなたの新しい項目に入力のホールドを取得しようとしている場合:

$('#input'+newNum).find('select') 
$('#input'+newNum).find('input[type="radio"]') 

しかし、実際には$(document).ready呼び出しの中で何かをしているので、これはうまくいきません。これは本当ですか?

+0

私はdiv id = "input1"を使ってのラジオを複製しようとしています。私は別のdiv input2を持っているとき、私はのID値を変更したいので、以前のIDと同じIDを持たないようにします。 – user696383

+0

より良い質問は、「最初にIDを持っている理由」です。ユニークなバタフライがある場合にのみIDを使用します。あなたが持っているものが「タイプのもの」ならば、それにクラスを与えます。そのポジションやその他の財産に基づいてターゲットを設定します。 IDには目的があり、ステージ上のすべての要素にタグを提供するのはそれではありません。 – Sinetheta

+0

私は$( '#input' + newNum).find( 'select:eq(0)')を使用しています。ラジオタイプと同じ:eq(x)が追加されました。 – user696383

0

あなたは具体的には、第1の子を選択するためにjqueryのを言っているからです。代わりに、InputBox関数(または選択)で最初の子を得るためにそれを教えてください

newElem.children('select:eq(0)'); //first select box 
newElem.children('input:eq(0)'); //first input box 
+0

.find()はSinethetaの答えは1等の無線の正しい動作します。ありがとう。 – user696383

0

.childrenを使用する代わりに、.findとセレクタのフォームjQuery拡張のいくつかを使用します。

http://api.jquery.com/category/selectors/

ので newElem.find(「....クラスやIDなど何かに挿入セレクター:ラジオ」)のようなもの

ハードの種類、あなたが与えることを掲載小さなサンプルからより詳細な答え。

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; 
} 
関連する問題