Heim >Web-Frontend >js-Tutorial >Was ist die optimale Methode zum Deaktivieren und Aktivieren von Elementen mit jQuery: prop() vs. attr() für boolesche Attribute?

Was ist die optimale Methode zum Deaktivieren und Aktivieren von Elementen mit jQuery: prop() vs. attr() für boolesche Attribute?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 19:12:30812Durchsuche

What's the Optimal Method for Disabling and Enabling Elements with jQuery: prop() vs. attr() for Boolean Attributes?

So deaktivieren und aktivieren Sie Elemente effektiv mit jQuery: Den Unterschied zwischen attr() und prop() verstehen

Problem:

Sie versuchen, Eingaben zunächst zu deaktivieren und sie dann zu aktivieren, wenn auf einen Link geklickt wird, aber Ihre aktuelle jQuery-Lösung funktioniert nicht.

HTML:

<code class="html"><input type="text" disabled="disabled" class="inputDisabled" value=""></code>

jQuery:

<code class="javascript">$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').removeAttr("disabled")
});</code>

Ursache:

Sie verwenden removeAttr() zum Entfernen das „disabled“-Attribut, aber dieser Ansatz weist Einschränkungen auf, insbesondere bei booleschen Attributen wie „disabled“.

Lösung: Verwendung von prop() anstelle von attr()

Für boolesche Attribute wird empfohlen, die Methode prop() anstelle von attr() zu verwenden. Diese Methode ändert explizit den zugrunde liegenden Eigenschaftswert des Elements, was effizienter und für boolesche Attribute geeignet ist.

JQuery aktualisiert:

<code class="javascript">$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});</code>

Warum prop() über attr() für boolesche Attribute?

  • Konsistenz: prop() legt den Eigenschaftswert konsistent fest, während attr() zu unerwartetem Verhalten führen kann einige Situationen.
  • Genauigkeit: prop() ruft den tatsächlichen Eigenschaftswert ab und legt ihn fest, während attr() basierend auf dem Attribut möglicherweise einen anderen Wert zurückgibt oder festlegt.
  • Effizienz: prop() ist für boolesche Attribute effizienter, da es die Eigenschaft direkt ändert, ohne das Attribut einzubeziehen.

Hinweis: In früheren jQuery-Versionen Bis 3.0 würde „removeAttr()“ für ein boolesches Attribut auch die entsprechende Eigenschaft auf „false“ setzen. Dieses Verhalten wurde in späteren Versionen nicht mehr unterstützt, was die Bedeutung der Verwendung von prop() für boolesche Attribute hervorhebt.

Das obige ist der detaillierte Inhalt vonWas ist die optimale Methode zum Deaktivieren und Aktivieren von Elementen mit jQuery: prop() vs. attr() für boolesche Attribute?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn