0

これを行うより良い方法はありますか:

partId = $(this).parent().parent().attr('data-partid') ;

行がページに出力され、各行に入力フィールドが含まれているものがあります。

ユーザーが入力フィールドをキーアップすると、入力が ajax を介してデータベースに保存されます。

情報が正しい行に保存されるようにするために、div に格納されている行 ID を送信する必要があります。

<div id="buyingRow0" data-partid="43293">...
4

4 に答える 4

1

よりクリーンな方法は、次のようなことを行うことです。

partId = $(this).closest('div[data-partid]').data('partid');

しかし、それがこれ以上効率的かどうかはわかりません。それはさらに遅いかもしれません。

于 2012-07-24T06:44:48.907 に答える
0

$(this).parent().parent()ちょうど2つのノードがアップしていると言います。.closest()DOM構造に過度に依存したくない場合は、残りのアドバイスとして使用することは確かに良いことです。

が多くのタグに追加する一般的な属性である場合data-partidは、関係する行に別のブールインジケーターを追加することもできます。、そのため、そのノード内にdata-buying-row他のタグを含めることができます。data-partid

<div id="buyingRow0" data-partid="43293" data-buying-row>
  ...
</div>

この場合、その購入行までトラバースします。

$(this).closest('div[data-buying-row]').data('partid');
于 2012-07-24T07:12:41.737 に答える
0

あなたが使用することができますclosest():

var partId = $(this).closest('div').attr('data-partid') ;
于 2012-07-24T06:47:39.557 に答える
0

ターゲット div に ID がある (そして ID 属性を正しく使用している) 場合は、それがページ上の唯一のものであることを意味します。

$('#buyingRow0').data('partid');

ここが一番分かりやすいようです。

于 2012-07-24T06:53:29.653 に答える