2016-03-24 17 views
0

私のフォームには、ユーザーが必要に応じて要素を追加するボタンがあります。各入力フィールドには、.change()ハンドラがあります。問題は、.changeが追加されたフォーム要素では発生しないが、既存のフォーム要素では引き続きトリガされることです。どんな助けもありがとうございます。追加された要素の入力変更でイベントが発生しない

$('.element').each(function() { 
$mainElement = $(this); // memorize $(this) 
$sibling = $mainElement.next('input'); // find a sibling to $this. 
$sibling.change(function($mainElement) { 
    return function() { 
     $mainElement.text('My textfield changed'); 
    } 
}($mainElement)); 

Jsfiddleデモ:http://jsfiddle.net/WCDBr/22

+0

ただ再確認してください。あなたが望むのは、「Add」ボタンをクリックすると、入力フィールドに入力したものがページに表示されるはずです。 – HenryDev

+0

既存の要素で、入力に何かを入力してマウスを離すと、ラベルが変更されます。 「追加」ボタンを使用して挿入された要素では、それは起こりません。 –

+0

あなたのフィドルはフォーム要素を追加しません。しかし、要素を追加する場合、追加されるごとに各要素にchangeイベントを設定する必要があります。 – RJM

答えて

0

わかりやすくするために、コードを貼り付けてコピーします。

[オン] [追加]ボタンをクリックすると、新しく作成された要素の変更イベントが再びバインドされません。これをクリックしてください:

$('#test').click(function(){ 
$('ul').append('<li><p class="element">Lorem ipsum</p><input/></li>'); 
$('.element').each(function() { 
    $mainElement = $(this); // memorize $(this) 
    $sibling = $mainElement.next('input'); // find a sibling to $this. 
    $sibling.change(function($mainElement) { 
     return function() { 
      $mainElement.text('My textfield changed'); 
     } 
    }($mainElement)); 
}); 
}); 
2

は法に試してみてください。

$(document).on('change', 'input', function() {}); 
//or 
$(document).on('change', '.inputclass', function() {}); 

それは文書で、イベントを登録し、それも新しく追加されたドキュメントのために働く必要があります。既存の要素に登録された変更イベント。

+0

それはうまくいきませんでした。以前と同じ問題。 –

関連する問題