2011-07-27 6 views
3

私は前回の質問で言われたように、私は以前のJavascriptを使いたいので、最近たくさんのjQuery質問をしました。データベースを生成したフロントエンドを持つ非常に古いASP.NETサイトを拡張し、アプリケーションの巨大さですが、それは完全に書き直す必要があります。しかし、再開発よりも追加するように言われました。 "JQueryを使用してラジオボタンのグループ名を見つける

今、私がやっていることは、バックエンドがテーブルのtr要素をループしたいインターフェイスにテーブルをレンダリングしたことです。trのtd要素の1つに2つのラジオボタンがあります。ラジオボタングループの名前を決定する必要があります。私はそれらを定義していないので、システムはGUIDなどを使用していますか?これは...

<table id="tableID"> 
    <tr>  
     <td class="qCol">  
     <!-- Label here -->  
     </td>  
     <td class="qCo2">  
     <!-- img here -->  
     <!-- and a text box -->  
     </td>  
     <td class="qCo3">  
     <!-- select menu here -->  
     </td>  
     <td class="qCo4">  
     <!-- radio buttons here -->  
     </td>  
     <td class="qCo5">  
     <!-- select menu here -->  
     </td>  
     <td class="qCo6">  
     <!-- hidden validation image here -->  
     </td> 
    <tr> 
</table> 

さて、私は、例えば、テーブル、テーブルをループすると同時に、別のセルのinnerHTMLプロパティを切り替えると行の一部を隠していている

、私は「ここではjQueryの、これら後でを表示する機能を追加することでしょう。しかし、私は、私はクラス.qCo4とセルになりますラジオボタンのname属性を決定しようとしている今

$('#tableID tr').each(function (i) { 

     /*switch select and validation and clear */ 
     $(this).children('td.qCol').html($(this).children('td.aCol5').html()); 
     $(this).children('td.aCol5').html($(this).children('td.vCol'.html("")); 

     /* hide all but the first row*/ 
     if (i >= 1) { 
      $(this).hide(); 
     } 

、次のようにエラーが返され、「未定義」であるため運がない...

/* get the radio button name and check if either are selected*/ 

// check something exists... 
if ($('input:radio', this).attr('name')) { 

    var thisRadioName = $(this).closest("input:radio").attr('name').val(); 
    alert(thisRadioName); 

} 

$thistr要素であるので、私は子供を使用してのではなく、最も近いすべきですか?これが意味をなさない場合、私は拡大してよりよく説明することができます。

答えて

2

find()またはchildren()を使用してください。検索は、ツリーの下の要素を探しながらclosest()は、木を上がる

var thisRadioName = $(this).find("input:radio").attr('name'); 

あなたも使用することができます任意のラジオはあなたがいる場合は、子供を使用する必要があります

var checkedRadio = $(this).find("input:radio:checked") 

チェックされているかどうかを確認するために「確認」あなたが探している要素が要素の直接の子であることを絶対に確かめてください。それ以外の場合はfind()を使用してください。このフィドルで

見て(あなたがstyilingのような他の理由のためにラッピングdiv要素の追加など、HTMLを変更した場合使用して発見は、リファクタリング、コードからあなたを守る):http://jsfiddle.net/nicolapeluchetti/Evq6y/

+0

私はそれをチェックしても同じ "未定義"のエラーが表示されます。どのように奇妙な? –

+0

私は微妙に悩み、あなたのアドバイスを取ってきました。 –

0
var thisRadioName = $(this).find("input:radio").attr('name'); 

はあなたが欲しいものを行う必要があります