以下の私の例を参照してください。入力にMikeを入力し、[入力の削除]をクリックしてページから入力を削除しようとしています。ユーザーが値を入力したときに、DOMで値が更新されていないようです。どうすればこれを回避できますか?
例: http: //jsfiddle.net/ZMSaD/
以下の私の例を参照してください。入力にMikeを入力し、[入力の削除]をクリックしてページから入力を削除しようとしています。ユーザーが値を入力したときに、DOMで値が更新されていないようです。どうすればこれを回避できますか?
例: http: //jsfiddle.net/ZMSaD/
これを試して:
$("#remove").click(function() {
$("input").filter(function(){
return this.value === "Mike"
}).remove()
});
値は DOM で更新され、alert($('#testing').val());
(#testing
は削除したい入力です) でこれを確認できます。
ただし$("input[value='Mike']").remove();
、ソース HTML に記述されている HTML 属性の値をチェックしているようです。奇妙なことに、このコンテキストでは HTML属性が更新されません。
この直感に反する例を試してください。入力を設定value="foo"
し、#testing
実行時にコントロールに「Mike」と入力すると、次のようになります。
alert($('#testing').attr('value')); // Mike
alert($('input[value="foo"]').val()); // Mike
ただし、変更時に属性に明示的に割り当てることで、強制的に更新することができます。
$('input').bind('change',function() {
$(this).attr('value',this.value)
});
その後、元のコードが機能します。