2016-04-23 5 views
0

jqueryが新しく、この簡単なタスクが私を圧倒します。私はあなたが次のコードを1つのループに変換する方法を知りたいですか?誰でも助けてくれますか? 「一つのループ」で使用すると、1つのイベント処理関数を意味すると仮定すると名前のインクリメントを使用したJqueryループ

$('#image1').change(function() { 
$('#input-image1 .error').hide(); 
}); 
$('#image2').change(function() { 
$('#input-image2 .error').hide(); 
}); 
+0

あなたは時にDOM要素を隠しています'change'イベントが発生します。 **正確に**あなたはループが必要ですか? – nem035

答えて

2

は、あなたが選択するために、グループに要素をクラスの組み合わせを使用することができ、また、data-*は、ターゲットにどの要素を示すために属性を指定します。これを試してみてください:

<input type="text" id="image1" data-target="input-image1" class="image" /> 
<input type="text" id="image2" data-target="input-image2" class="image" /> 

<div id="input-image1"> 
    <span class="error">error</span> 
</div> 
<div id="input-image2"> 
    <span class="error">error</span> 
</div> 
$('.image').change(function() { 
    $('#' + $(this).data('target') + ' .error').hide(); 
}); 
1

あなたは、単にループを使用することができます。

var i; 
for (i=1; i<3; i++) { 
    $('#image'+i).change(function() { 
     $('#input-image1'+i+' .error').hide(); 
    }); 
} 
1

あなたの要素をループするjQueryの$.eachを使用することができます。

$.each($('#image1, #image2'), function (k) { 
    $(this).on('change', function() { 
     $('#input-image' + ++k + '.error').hide(); 
    }); 
}); 
+0

これは完全に機能します。ありがとう! – danny3b

関連する問題