30

カスタムのブール属性を使用して、要素のコンテンツを編集可能としてマークしたいと考えています。属性は知っていdata-*ますが、値が必要かどうかはわかりませんでした。data-is_editable="false"属性の欠如は同等であるため、私は必要ありません。それが「true」であるかどうかだけを気にします(属性が存在する場合)。のような他の属性を使用できることはわかっていますclassが、少し不適切に思えるので使用したくありません (間違っている場合は訂正してください)。

これが私が読んでいるリソースです。おそらく間違ったドキュメントであるか、探している情報を見落としています: http://www.w3.org/html/wg/drafts/html/master/dom.html#カスタムデータ属性

たとえば、これは合法で有効ですか?

<div data-editable data-draggable> My content </div>
4

2 に答える 2

23

あなたが示す例は有効です。(フォームでdisabledorを使用するのと同じように。値の存在を強制するだけです)checkedxHTML

ただし、返される値はブール値ではありません。data-*このリソースにクエリを実行すると、空の属性に対して空の文字列が返されます。

そのようです:

 domNode.dataset.draggable; // log ""
 domNode.dataset.notAdded; // log null

だから、あなたはそれをチェックする必要があります:

var isDraggable = (domNode.dataset.draggable != null)

編集

それを今まで言わなかったのはばかげている。ただし、ブール値が必要な場合は、属性が存在するかどうかを確認できます。

domNode.hasAttribute("data-draggable");
于 2013-05-31T20:10:26.120 に答える
7

W3.org バリデーターに合格しています。これは良い兆候です。

Javascriptdatasetと jQuery のdata関数は、属性が存在するか存在しないかの違いを認識しているようですが、存在する場合は値が空の文字列になり、存在しない場合は未定義または null になります。混乱を避けるために、私はそれを個人的には使用しないと思います<div data-editable="1"></div>

于 2013-05-31T20:10:40.803 に答える