2
以下のコードのように最初の行で動作しますが、行を追加した後には動作しません。私は、新しい行が作成されたことを認識していないと思います。私はここに、ここで を立ち往生コード.append a rowなぜ.onが動作しないのか?
<table id="Allitems" class="table table-bordered table-hover Ptable">
<tbody class = "input_fields_wrap_addRow">
<tr class ="inputdata3">
<td class ="inputdata">
</td>
<td class ="inputdata">
<input type="number" name="data[Invoice][itemQuantity][]" step="1" min="0" class="form-control Invquantity">
</td>
</tr>
</tbody>
</table>
<div id="inv_" class="inv_spacer" >
<button class="add_field_button">Add More Fields</button>
</div>
そして
$(document).ready(function() {
var wrapper = $(".input_fields_wrap_addRow"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
$(wrapper).append('<tr class ="inputdata3"><td class ="inputdata"></td><td class ="inputdata"><input type="number" name="data[Invoice][itemQuantity][]" step="1" min="0" class="form-control Invquantity"></td></tr>'); //add input box
});
});
$(function(){
$('.inputdata3').on('keyup','.Invquantity',function(){
var tr = $(this).parent().parent();
alert("eded");
});
});
あなたの 'tr'は、リスナーが設定されているときに文書にまだ追加されません。なぜなら、それはクリックの後でしかないからです。回答が示唆するようなより高いレベルのリスナーを設定するか、作成時にリスナーを追加するだけです: 'var el = $( '
答えて
イベントが委任イベントハンドラが装着された時点で存在することがある静的な要素に委任する必要があります。
inputdata3
が動的に生成するので、イベントハンドラは機能しませんでした。代わりの
$('.inputdata3')
使用wrapper
キャッシュされた変数またはinput_fields_wrap_addRow
セレクタ出典
2017-07-12 12:12:30 Satpal
これはthnx manを処理し、彼の作業をクリアします。 – manish5310277
それは文句を言わない拾っ取得動的にロードされた要素であるためには、代わりに使用します。
ホープ、このことができます!
出典
2017-07-12 12:12:44
これを試してはいけません。これがうまくいけばいいですか。 – manish5310277
.inputdata3
をチェックしているため動作しません。 JSコードは最初に.inputdata3
になり、最初に動作します。あなたがEVを装着しているので$('table#Allitems').on('keyup', '.Invquantity', function() {
出典
2017-07-12 12:13:51
thnxこれも働いています:) – manish5310277
よろしくお願いします。ハッピーコーディング! –
それはうまくいくかもしれませんが、答えに記載された理由ではありません。 '$( '。inputdata3')'は、最初のクラスだけでなく、クラス 'inputdata3'を持つすべての要素を取得します: – vi5ion
:に
$('.inputdata3').on('keyup','.Invquantity',function(){
:あなたはこの行を変更する必要が
最初にレンダリングされた最初の
tr
のリスナーがこのtr
に接続されています。新しく追加された行には、このリスナーが接続されていません。イベントのバブリングを利用する必要があります。だからではなく、次のようにあなたのtbody
にあなたのイベントのリスナーを添付:ここは、作業スニペットです。
Run Code Snippet
ボタン出典
2017-07-12 12:16:56 Zeeshan
代わりの
$('.inputdata3')
を選択する上でクリックすることであるように、この$('.input_fields_wrap_addRow')
よう.input_fields_wrap_addRowを選択し、このスニペットを実行することができます。出典
2017-07-12 12:17:42
関連する問題