-1

次の設定で:

<div id="foo"/>​

JavaScript(jQuery 1.8.0):

$('#foo').removeProp('id').prop('id', 'bar');

alert($('#bar').length);
alert($('#foo').length);
alert($('#undefined').length);​

要素IDがbar期待どおりに更新されていないことに注意してください(最終アラートのみが生成されます1)(Chrome 21)

これは私の使用に関連しているようですremoveProp('id'); これは、この例では冗長ですが(直接に設定できる場合idbar最終的なコードで必要になります。

ここで、JavaScriptでIDを削除する正しい方法について知りたいと思います。使うべきだったのremoveAttr()?これはjQueryのバグですか?一度設定したIDを削除することは合法ですか?

4

3 に答える 3

4

注意すべき点が2つあります。1つ目は、idがプロパティではなく属性であるため、代わりにattr()/を使用する必要があるということです。removeAttr()

removeProp()2つ目は、次のことを明示的に行わないようにするためのAPIです。

checked...このメソッドを使用して、、、、などのネイティブプロパティを削除しdisabledますselected。これにより、プロパティが完全に削除され、削除されると、要素に再度追加することはできなくなります。.prop()代わりに、これらのプロパティをに設定するために使用しfalseます。

また、設定を解除してから設定するのではなく、単に次のように変更してみませんかattr()

$(elem).attr('id', 'newValue');
于 2012-09-20T19:47:21.673 に答える
2

何をしようとしているのかわかりませんが、IDを設定するには、以下のように簡単に設定できます。

$('#foo')[0].id = 'bar'

ただし、jQueryは以下に言及していますが、

この.removeProp()メソッドは、メソッドによって設定されたプロパティを削除します.prop()

DOM要素またはウィンドウオブジェクトの一部の組み込みプロパティでは、プロパティを削除しようとすると、ブラウザでエラーが発生する場合があります。jQueryは最初に未定義の値をプロパティに割り当て、ブラウザが生成するエラーを無視します。一般に、削除する必要があるのはオブジェクトに設定されているカスタムプロパティのみであり、組み込み(ネイティブ)プロパティは削除しません。

注:このメソッドを使用して、チェック済み、無効、または選択済みなどのネイティブプロパティを削除しないでください。これにより、プロパティが完全に削除され、削除されると、要素に再度追加することはできなくなります。代わりに、.prop()を使用してこれらのプロパティをfalseに設定します。

于 2012-09-20T19:48:45.113 に答える
0

削除はどうですか?

delete object['property'];

未定義に割り当てるだけでなく、完全に削除されると思います。

于 2012-09-20T19:51:52.800 に答える