2

javascript/jquery が初めてで、現在のオブジェクトを使用thisまたは取得するのに苦労しています。$(this)

radio buttons各行に という名前の のセットを持つテーブルがありますs_<rowindex>。デフォルトでは、どのラジオ ボタンもチェックされていません。

<tr>
   <td align="left" style="width: 300px">
      <div id="div_s_0">
         <input type="radio" name="s_0" value="1" />Public
         <input type="radio" name="s_0" value="2" />Not Public
         <input type="radio" name="s_0" value="3" />Confidential
      </div>
   </td>
</tr>
<tr>
   <td align="left" style="width: 300px">
      <div id="div_s_1">
         <input type="radio" name="s_1" value="1" />Public
         <input type="radio" name="s_1" value="2" />Not Public
         <input type="radio" name="s_1" value="3" />Confidential
      </div>
   </td>
</tr>

ユーザーがラジオボタンを選択するたびにテーブルに新しい行を追加するjQuery関数を作成しようとしていますが、現在テーブルの最後の行にある場合のみです。私がやりたいのは、クリックされたラジオ ボタンの name 属性を取得し、それを解析して行インデックス (つまり、「_」の後の部分) を取得し、それをテーブル内の行数と比較することです。等しい場合は新しい行を追加し、そうでない場合は何もしません。

これをどのように攻撃するかによって、私の質問は 2 つあります。

1) ラジオ ボタンの name 属性を返すにはどうすればよいですか? または 2) 現在いる行の行インデックスを返すにはどうすればよいですか?

4

3 に答える 3

5

これにより、指定した HTML を使用してインデックスが取得されます。

$(document).ready(function() {
    $("input:radio").click(function() {
        var index = parseInt(this.name.split('_')[1])
    });
});

あなたを助けるかもしれないもう一つのこと:あなたのテーブルの行数を取得する:

$($("table").children()[0]).children().length

これが途中で役立つことを願っています。

于 2008-10-16T19:36:58.107 に答える
2

特定の質問 1 と 2 について、テーブルに「mytable」の ID を指定した場合、この例では探しているものが得られるはずです。

var rowIndex = $("#mytable tr").index($(this).parents("tr"));
var inputName = $(this).attr("name");
alert("Input Name: " + inputName + "; RowIndex: " + rowIndex);
于 2008-10-16T20:04:44.693 に答える
0

これは、私の頭の上から離れた、テストされていないコードです。

$("#div_s_0 input[type='radio']").onclick = function() {
    if ($("#div_s_0 input[type='radio']:last").attr('checked') == 'checked') {
    /* add a new element */
    }
}

それは、div 内の各ラジオ ボタンに onclick イベントをアタッチすることです。onclick は、そのグループの最後のラジオ ボタンがチェックされているかどうかをチェックし、チェックされている場合は別の要素を追加します。

私が言ったように、それはまだテストされていません。セレクター ( # ) についてはよくわからないdiv_s_0 ... :lastので、最初に Firebug で実行してみてください。

于 2008-10-16T19:29:56.107 に答える