Heim  >  Artikel  >  Web-Frontend  >  Was ist der Unterschied zwischen data() und attr() in jquery?

Was ist der Unterschied zwischen data() und attr() in jquery?

青灯夜游
青灯夜游Original
2021-11-15 14:38:581755Durchsuche

Unterschied: „$.attr()“ übernimmt jedes Mal den Attributwert vom DOM-Element, der mit dem Attributwert im Tag in der Ansicht übereinstimmt, während „$.data()“ den Wert von der JQuery übernimmt Objekt Da die Objektattributwerte im Speicher gespeichert sind, stimmen sie nicht unbedingt mit den Attributwerten in der Ansicht überein.

Was ist der Unterschied zwischen data() und attr() in jquery?

Die Betriebsumgebung dieses Tutorials: Windows7-System, jquery1.10.2-Version, Dell G3-Computer.

$.attr() und $.data() gehören im Wesentlichen zu DOM-Attributen und Jquery-Objektattributen Unterschied. $.attr()$.data()本质上属于DOM属性Jquery对象属性的区别。

一个简单的例子

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Jquery中.attr和.data的区别</title>
    </head>
    <body>
        <p id="app" data-foo="hello"></p>
    </body>
    <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    <script type="text/javascript">
        var getAttr1 = $(&#39;#app&#39;).attr(&#39;data-foo&#39;);
        var getData1 = $(&#39;#app&#39;).data(&#39;foo&#39;);
        console.log(&#39;getAttr1: &#39; + getAttr1); //hello
        console.log(&#39;getData1: &#39; + getData1); //hello
 
        $(&#39;#app&#39;).attr(&#39;data-foo&#39;, &#39;world&#39;); //$.attr 设置DOM元素属性值
        var getAttr2 = $(&#39;#app&#39;).attr(&#39;data-foo&#39;);
        var getData2 = $(&#39;#app&#39;).data(&#39;foo&#39;);
        console.log(&#39;getAttr2: &#39; + getAttr2); //world
        console.log(&#39;getData2: &#39; + getData2); //*** hello ***
 
        $(&#39;#app&#39;).data(&#39;foo&#39;, &#39;WORLD&#39;); //$.data 设置DOM node属性值
        var getAttr3 = $(&#39;#app&#39;).attr(&#39;data-foo&#39;);
        var getData3 = $(&#39;#app&#39;).data(&#39;foo&#39;);
        console.log(&#39;getAttr3: &#39; + getAttr3); //world
        console.log(&#39;getData3: &#39; + getData3); //*** WORLD ***
 
    </script>
</html>
  • $.attr()每次都从DOM元素中取属性的值,即和视图中标签内的属性值保持一致。

    • $.attr('data-foo')会从标签内获得data-foo属性值;

    • $.attr('data-foo', 'world')会将字符串'world'塞到标签的'data-foo'属性中;

  • $.data()是从Jquery对象中取值,由于对象属性值保存在内存中,因此可能和视图里的属性值不一致的情况。

    • $.data('foo')会从Jquery对象内获得foo的属性值,不是从标签内获得data-foo属性值;

    • $.data('foo', 'world')会将字符串'world'塞到Jquery对象的'foo'属性中,而不是塞到视图标签的data-foo属性中。

结合上面代码和解释,大家应该能够理解两者的区别。

所以$.attr()和$.data()应避免混合用,也就是应该尽量避免如下两种情况的出现:

  • 通过$.attr()来进行set属性,然后通过$.data()进行get属性值;

  • 通过$.data()来进行set属性,然后通过$.attr()进行get属性值。

同时从性能的角度来说,建议使用$.data()来进行set和get操作,因为它仅仅修改的Jquey对象

Ein einfaches Beispiel

rrreee

  • $.attr() übernimmt jedes Mal den Attributwert aus dem DOM element, der mit dem Attributwert im Tag in der Ansicht übereinstimmt .
    • $.attr('data-foo') erhält den data-foo-Attributwert vom Tag 🎜
    • 🎜$.attr('data-foo', ' world ') fügt die Zeichenfolge 'world' in das 'data-foo'-Attribut des Tags ein 🎜
  • 🎜$.data() stammt aus dem Jquery-Objekt Da die Objektattributwerte im Speicher gespeichert sind, stimmen sie möglicherweise nicht mit den Attributwerten in der Ansicht überein. 🎜
    • 🎜$.data('foo') erhält den Attributwert von foo vom Jquery-Objekt, nicht den data-foo-Attributwert vom Tag 🎜
    • 🎜$.data('foo', 'world') fügt die Zeichenfolge 'world' in das 'foo'-Attribut des Jquery-Objekts anstelle von data- im foo-Attribut ein . 🎜
🎜In Kombination mit dem obigen Code und der Erklärung sollte jeder in der Lage sein, den Unterschied zwischen den beiden zu verstehen. 🎜🎜Daher sollten $.attr() und $.data() eine gemischte Verwendung vermeiden, das heißt, die folgenden zwei Situationen sollten so weit wie möglich vermieden werden: 🎜
  • 🎜 Legen Sie das Attribut über $.attr() fest und rufen Sie dann den Attributwert über $.data() ab. 🎜
  • 🎜 Legen Sie das Attribut über $.data() fest und verwenden Sie dann $ .attr( ), um den Attributwert abzurufen. 🎜
🎜Gleichzeitig wird aus Leistungssicht empfohlen, $.data() für Set- und Get-Vorgänge zu verwenden, da dadurch nur der Attributwert des Jquey-Objekts geändert wird . Es werden keine zusätzlichen DOM-Operationen verursacht. 🎜🎜Empfohlene verwandte Video-Tutorials: 🎜jQuery-Tutorial🎜(Video)🎜

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen data() und attr() in jquery?. 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
Vorheriger Artikel:Was ist der GT von Jquery?Nächster Artikel:Was ist der GT von Jquery?