Ist es in Ordnung, HTML-Elementen eigene Attribute hinzuzufügen?

Ich muss auf diese Nummer in meinem JavaScript zugreifen (mit jQuery). Es ist einfach, den Wert des Attributs zu nehmen, aber das Extrahieren des numerischen Werts aus einer Zeichenfolge wie "m12" oder "m6" ist ein Schmerz. (Ich bin ein Anfänger in JavaScript Welt.)

Mögliche Duplikate:
Custom attributes - Yay or nay?
Non-Standard Attributes on HTML Tags. Good Thing? Bad Thing? Your Thoughts?

Im aktuellen Lernprojekt, an dem ich arbeite, muss ich ein Attribut hinzufügen, dessen Wert eine Zahl sein wird. Zuerst dachte ich daran, "id" für diesen Zweck zu verwenden, aber an answer revealed that it is not good to do that. offenbarte, dass es nicht gut ist, das zu tun.

Ist es in Ordnung, wenn ich mein eigenes Attribut erstelle, "messid" sage und ihm einen numerischen Wert wie "12", "6" usw. zuweise?

Hier ist, warum ich dies tun möchte, damit Sie mich korrigieren können, wenn ich es völlig falsch mache:

Antwort auf "Ist es in Ordnung, HTML-Elementen eigene Attribute hinzuzufügen? " 7 von antworten

Nein -- it's not. .

Darüber wurde viel diskutiert:

Am Ende des Tages bin ich im Lager, das glaubt, dass Datenattribute der beste Weg sind. Sie werden in HTML5 eingeführt, um Namenskonflikte zu vermeiden. Im Wesentlichen, wenn Sie etwas Daten im Zusammenhang speichern möchten, fügen Sie einfach "Daten-" auf den Attributnamen vor:

<div class="user" data-userid="5"></div>

Der einzige Con zum Ganzen ist dann, dass Ihre XHTML nicht validieren wird, aber ich ehrlich gesagt kümmert mich nicht über das Zeug. (Das ist richtig, ich sagte es)

In HTML 5 dürfen Sie jedes Attribut hinzufügen, das mit data-, so e.g. beginnt, also z.B. <div data-messid="12"> is OK. ist OK.

HTML 4 und XHTML 1 werden nicht überprüft, wenn Sie Ihr eigenes Attribut hinzufügen, aber außerdem wird nichts Schlimmes passieren, wenn Sie attributname eindeutig genug wählen (damit es nicht mit einem aktuellen oder zukünftigen HTML-Attribut in Konflikt steht).

Ich verwende benutzerdefinierte Attribute, und da sie von allen Browsern unterstützt werden, habe ich überprüft, ich denke, es ist nicht schlecht, sie zu verwenden. Sie können auch benutzerdefinierte HTML-Tags verwenden, um HTML5 zu simulieren, mit einigen IE-Hack, also warum nicht Attribute verwenden, wenn sie keine Hacks benötigen?

Auf jeden Fall können Sie eine ähnliche Diskussion hier lesen: Custom attributes - Yea or nay?

Dies ist keine definitive Antwort, aber nachdem ich dies in der Vergangenheit tun musste, kann ich sagen, dass dies nicht nur gut funktioniert, es ist browserübergreifend freundlich.

So wissen Sie, Sie können leicht eine ID aus einer Zeichenfolge wie m12 oder m6 extrahieren, ich würde es so machen:

//name the IDs m_12, m_3 etc
var number = $('#someElement').attr('id').split('_')[1];

Oder wenn man sagt, Sie haben eine Reihe von Links mit Zahlen in der ID wie oben, und alle Links haben die clickMe class: Klasse:

$('a.clickMe').click(function() {
    alert($(this).attr('id').split('_')[1]);
});

Wenn Sie jQuery verwenden, können Sie .data verwenden, um benutzerdefinierte Informationen für ein Element zu speichern.

Die Kehrseite von benutzerdefinierten Attributen sind:

  • IE6 erstellt zusätzliche Objekte, um benutzerdefinierte "expando"-Attribute zu speichern, die vor allem dann auslaufen, wenn sie per Skript erstellt werden.

  • Validierungsprobleme