15

私はjQueryの中間ユーザーです。jQUeryを使用してテーブルのrowIndexを見つけることは知っていますが、私のシナリオは別のものです。私のテーブル(GridView)は20列で構成されており、各列にはテキストボックス、ドロップダウンリスト、画像、ラベルなどのさまざまなコントロールがあります。すべてが各行のサーバー側のコントロールです。グリッドビューをデータベースのレコードにバインドします。ここで、任意のコントロールまたは任意のテキストボックスのonchangeをクリックすると、その変更された列の行のrowIndexを取得する必要があります。これが私が使用したコードです:

$("#gv1 tr input[name $= 'txtName']").live('click', function(e){
   alert($(this).closest('td').parent().attr('sectionRowIndex'));
});

しかし、rowIndexを取得できません。グリッドビュー内でhtmlコントロールを使用すると、rowIndexを取得できます。グリッドビュー内のサーバーコントロールがクリックされたときにrowIndexを見つける方法はありますか?

4

4 に答える 4

44

これを試して:

var rowIndex = $(this)
    .closest('tr') // Get the closest tr parent element
    .prevAll() // Find all sibling elements in front of it
    .length; // Get their count
于 2009-10-25T08:51:40.407 に答える
9

sectionRowIndex<tr>属性ではなく、要素のプロパティです。

サンプル コードを変更する正しい方法は、次のようにゼロ インデクサーを使用して jQuery 項目にアクセスすることです。

$("#gv1 tr input[name $= 'txtName']").live('click', function(e){
   alert($(this).closest('td').parent()[0].sectionRowIndex);
});

これにより、正しい行インデックスが返されます。また、jQuery の.closest()関数を使用して DOM をトラバースし、.parent()さらに<tr>.

$("#gv1 tr input[name $= 'txtName']").live('click', function(e){
   alert($(this).closest('tr')[0].sectionRowIndex);
});

これは、親子関係が期待どおりではない奇妙なケースにも対処します。たとえば、a をチェーンして$(this).parent().parent()から、内側のセルを別の div またはスパンでラップすることにした場合、関係が台無しになる可能性があります。これ.closest()は、常に機能することを確認する簡単な方法です。

もちろん、私のコード サンプルは、上記で提供されたサンプルを再利用しています。最初に単純なセレクターでテストして機能することを証明してから、セレクターを改良することをお勧めします。

于 2011-11-24T21:43:43.427 に答える
4

これは、変更時のテーブル セルのチェックボックス用です。

 var row = $(this).parent().parent();
 var rowIndex = $(row[0].rowIndex);
 console.log(rowIndex);
于 2011-06-24T15:39:06.377 に答える
2

ただ使用できるはずです:

var rowIndex = $(this).parents("tr:first")[0].rowIndex;
于 2014-11-10T19:17:54.370 に答える