0

私が抱えている問題を説明するのはかなり難しいですが、jsFiddle http://jsfiddle.net/6ms4T/1/で複製しました

私が達成しようとしているのは、「数量」テキスト ボックスを更新することです。別の場所に値を表示したいと考えています (その下の行を「コスト ライン」と呼びます)。

基本的に、最初の入力ボックス ( ) を更新すると、その製品に関連する ID だけでなく、「コスト ライン」のqty_item_1すべての ( ) ID が更新されます。quant_

function recalc(){

$("[id^=quant_]").text($("input[id^=qty_item_]").val());

等...

完全なコードはこちら: http://jsfiddle.net/6ms4T/1/

どんな助けでも大歓迎です。

4

4 に答える 4

1

入力に関する情報を保持する属性を追加します。最初の入力に値 1、2 番目の入力に値 2 を持つ属性「rel」を追加し、この rel を使用して li 要素の正しい ID を作成しました。

これは更新された動作中の jsFiddle です: http://jsfiddle.net/6ms4T/8/

于 2012-04-25T12:10:41.997 に答える
0

変更されている要素のIDを見つけて、残りの計算で使用するためにその数字部分を抽出できます。これが私が変更した側面と作業バージョンです。

var uniqueOne = $(this).attr("id").match(/\d+/);
$("[id^=quant_][id$="+uniqueOne+"]").text($("input[id^=qty_item_][id$="+uniqueOne+"]").val());

最もきれいに見えるコードではありませんが、それが行うことは、quant_で始まりuniqueOneで終わるIDを見つけることです。これらを凝縮することもできますが、2つのセレクター(で始まり、で終わる)の組み合わせが強調されています。

素晴らしいアイデアがたくさんあるようです。

編集

IDがqty_item_で始まらない場合は、別のセレクターを使用する必要があります。これの最も低いハンギングフルーツは、containsセレクターです:id*=blah

見つけるために「グロス」IDでバージョンを更新しました:http://jsfiddle.net/6ms4T/22/

編集

以前のjsfiddleは、期待どおりに合計を更新することを処理しませんでした。この更新されたバージョンは、DOM要素がIDによって検索されるすべてのケースを識別することにより、混乱を減らすはずです。ただし、これをリファクタリングする必要がある可能性が高いです:http: //jsfiddle.net/6ms4T/24/

編集

OPのタグにはさまざまな数字と文字がIDに生成されていましたが、最後の数字の前にはアンダースコアが付いていました。これにより、正規表現で重要なIDが見つかりました/\d+$/。他のポスターが示しているように、これを解決する方法は複数あります。私は個人的にユーザーgabitzishが好きでした。

于 2012-04-25T12:16:12.313 に答える
0

recalc() 関数の開始を次のように変更します。

function recalc(e){
    var idx = $(e.target).attr('id').split('_').pop();
    $("[id^=quant_" + idx + "]").text($(e.target).val());

... }

于 2012-04-25T12:19:55.837 に答える
0

idの数値コンポーネントを識別し、その数値をセレクターの一部として使用することで、物事を比較的簡潔にし、特定の要素のみにイベントを適用できます。

var idNum = this.id.match(/\d+/);
$("#quant_" + idNum).text($("#qty_item_" + idNum).val());

JS フィドルのデモ

参考文献:

于 2012-04-25T12:08:11.497 に答える