Ich hatte ein ähnliches Problem. Ich hatte einige Formulare, bei denen ich einfach festlegen wollte, ob das Feld erforderlich war oder nicht. Meine Formulareingabe sah wie folgt aus:
< input id="myid" name="myname" type="text" required="true" />
Es funktionierte in allen Programmen außer dem IE9 hervorragend! Oje!
Das Problem ist, dass ich nicht die neue Eigenschaft mit jQuery setzen möchte, und ich möchte nicht den Prototyp für Eingabeelemente erweitern.... Ich möchte nur eine Lösung, die in allen Browsern ohne eine Menge zusätzlichen Code oder Verzweigungen funktioniert.
Ich habe die prop()-Methode von jQuery ausprobiert, aber auch hier musste sie manuell eingestellt werden. Ich wollte etwas, das alle DOM-Elemente als geladen und extrahieren die Daten auf diese Weise nehmen würde.
Ich habe festgestellt, dass die jQuery attr()-Methode in allen Browsern außer IE9 funktioniert. Nachdem ich eine Weile darin herumgestochert hatte, wurde mir klar, dass das Attribut zwar vorhanden war, aber im IE9 ein wenig anders behandelt wurde.
Also habe ich die Werte auf diese Weise abgerufen:
var val = $('#elementID').attr('required') || $('#elementID')[0].getAttribute('required');
Es ist nicht perfekt, aber es funktionierte hervorragend und ich musste nicht zurückgehen und meine Attribute mit "data-" umbenennen oder sie zuweisen, nachdem das DOM geladen war.
Wäre es nicht großartig, wenn jQuery 1.6.x diese Änderung der attr() und prop() Methoden für uns hinzufügen würde!
Wenn jemand eine elegantere Lösung kennt, die KEINE EINSTELLUNG DES ATTRIBUTS NACH DEM SEITENLADEN ERFORDERT, dann lassen Sie es mich bitte wissen.