1

これは私の最初のstackoverflowの質問なので、うまくやってみてください。;-D

私の問題はこれです。既存のJavaScriptコードをリファクタリングし、jQueryを使用して実行しています。いくつかの場所で、次のようなjavascriptコードに出くわしました。

// some js code working with the customAttribute value
javascriptElementObject.customAttribue = void(0);

javascriptElementObjectはjQueryオブジェクトになり、次のコードを使用して同じことを実行しようとしています。

// some js code working with the customAttribute value
javascriptElementObject.attr("customAttribute", void(0));

しかし、これは何もしていないようです。ただし、次のコードは機能します。

javascriptElementObject.get(0).customAttribute = void(0);

jQueryのremoveAttr()関数は知っていますが、属性値をvoid(0)に設定するのと同じかどうかわからないため、これまで使用していません。

つまり、2つの質問があるということです。

  1. 最初のjQueryバージョンが機能しないのはなぜですか?
  2. .get(0).customAttribue = void(0);です。および.removeAttr( "customAttribute);同等ですか?

ありがとう。

4

4 に答える 4

6

jQueryはメソッドをオーバーロードするのが好きなので:

obj.attr( name ) //retrieves the attribute value
obj.attr( name, value ) //sets the attribute

obj.attr( name, void(0) ) == obj.attr( name, null ) == obj.attr( name ) //i.e retrieving the attribute

空の属性を設定する場合は、次のことを試してください。

obj.attr( name, '' )

jQuery.html()これは、たとえば他の方法にも適用されます

于 2009-01-14T22:37:01.343 に答える
2

何を達成しようとしていますか?

名前と値のペアの値を削除することが目的の場合は、属性を完全に削除することもできます。値を持たない属性を維持することの本質的な価値を認識していません。標準に準拠していないブラウザでは、問題が発生することさえあります。

一般に、 $(selector).attr(name, value) と $(selector).removeAttr(name) の構文は非常にうまく機能します (少なくとも失敗したことはありません)。

void(0) を使用して A HREF が発生しないようにする場合は、これらの A タグのクリック イベントとして「return false」を使用することをお勧めします。

于 2009-01-14T22:20:57.493 に答える
0

うーん、これを試してください:

javascriptElementObject.attr("customAttribute", void(0));
var _void = javascriptElementObject.attr("customAttribute");
alert(_void);
于 2009-01-14T22:22:29.283 に答える