0

テーブルのあるフォームがあります。

<form >
    <div>   
    <table>
 <tr>        
       <td >  <input type="text" id="slno1" size="25" value="10" /> </td>     
       <td >  <input type="text" id="data" size="10" value="this is a test" /> </td>      
       <td >  <input type="radio"  value="" id="edit1" name="sample"  /> </td>    

  </tr>
   <tr>          
       <td >  <input type="text" id="slno2" size="25" value="10" /> </td>     
       <td >  <input type="text" id="data1" size="10" value="this is a test1" /> </td>    
       <td >  <input type="radio"  value="" id="edit1" name="sample"  /> </td>    
  </tr>
  </table>
  <input type="submit" id="mysu1" Value="submits" />  
    </div>
  </form>

ユーザーがラジオボタンで行を選択すると、その行のすべてのデータが必要になります。だから、私たちは:

var theSelectedRadioButton = theForm.find('input[name="sample"]:checked');

td で対応するすべての値を取得するにはどうすればよいですか。

4

3 に答える 3

1
var theSelectedRow = theSelectedRadioButton.closest('tr');

そこから行のデータにアクセスできます。

余談: データ処理関数をラジオ ボタンにバインドすることができます。その後、「検索」する必要はありません。

于 2012-12-10T06:46:28.190 に答える
1

closestラジオ ボタンで を使用して、そのtr中のを見つけてから、その行のchildrenすべての を見つけることができます。td

var tds = theSelectedRadioButton.closest('tr').children('td');

次に、またはtdを使用したループで、から情報を抽出します。情報がどこにあるかは述べていませんが、たとえば、HTML が必要な場合:eachmap

var tdhtml = theSelectedRadioButton.closest('tr').children('td').map(function(td) {
    return $(this).html();
}).get();

tdhtml...結果は、各 の HTML を含む文字列の配列になりますtdget(最後に見落としがちな呼び出しに注意してください: mapjQuery オブジェクトの内容が DOM 要素でなくてもそれを返し、getそれを通常の配列に変換します。)

data-*または、情報が の属性に格納されている場合td(data-fooこの例では):

var tddata = theSelectedRadioButton.closest('tr').children('td').map(function(td) {
    return $(this).attr('data-foo');
}).get();
于 2012-12-10T06:42:29.327 に答える
1

jsFiddle デモ

ターゲット入力フィールドの値が変更された場合.closest()、適切な行を見つけて、各子の値を新しいオブジェクトに収集するために使用できます。

$(theForm).find('input[name="sample"]').change(function() {

    var vals = $(this).closest('tr').children('td').map( function() {
        return $(this).find('input').val();
    }).toArray();
});
于 2012-12-10T06:46:58.823 に答える