1

以下の私の例を参照してください。入力にMikeを入力し、[入力の削除]をクリックしてページから入力を削除しようとしています。ユーザーが値を入力したときに、DOMで値が更新されていないようです。どうすればこれを回避できますか?

例: http: //jsfiddle.net/ZMSaD/

4

2 に答える 2

3

これを試して:

$("#remove").click(function() {
    $("input").filter(function(){
       return this.value === "Mike"
    }).remove()
});

http://jsfiddle.net/N6pw6/

于 2012-09-17T17:51:32.013 に答える
1

値は 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)
});

その後、元のコードが機能します。

于 2012-09-17T18:29:39.990 に答える