【问题标题】:Does jQuery attr allow for non standards?jQuery attr 是否允许非标准?
【发布时间】:2011-03-07 18:11:04
【问题描述】:

我已经在使用 id 和 title 但我需要再解析 2 位...

$(this).attr("title"); $(this).attr("id");

$(this).attr("custom1"); 会工作吗??

【问题讨论】:

  • 你可以试着告诉我们:o)

标签: javascript jquery parsing attr


【解决方案1】:

是的,顺便说一句,您可以一次设置多个属性:

$('.myselector').attr({
src: 'thefile.gif',
width: 200,
height: 300 });

【讨论】:

    【解决方案2】:

    是的,您可以将它用于 HTML5 中的所有 data-attributes。这是添加额外属性的首选方式。

    此外,所有data-* 属性都会自动添加到jQuery 的data() 对象中以便于访问

    【讨论】:

      【解决方案3】:

      如果您只想(通过名称)将某些数据与 DOM 元素相关联,最好使用“.data()”方法:

      $(this).data('custom1', someValue);
      

      “.data()”API 使编码到 HTML 中的 HTML5 样式的“data-foo”属性可访问:

      var foo = $(this).data('foo'); // gets the "data-foo" attribute value from element
      

      【讨论】:

      • 这在所有方面都是更清洁的解决方案。因此,您对带有无效属性的 html 标记并不礼貌。也许您也可以在这里查看 api:api.jquery.com/data
      • @asrijaal:.data“在所有方面”都不干净。使用.data 读写之间缺乏对称性:.data('custom', 'foo') 不会将data-custom="foo" 放入 DOM。 .attr 没有这个问题。您写入的任何 [原始] 都可以在 DOM 中访问。
      • @Roatin Marth 是的,这是真的,但是随着“.data()”的一致使用,我不明白它为什么重要。由于内存使用原因,将 JavaScript 对象直接附加到 DOM 元素是有风险的,因为(主要在 IE 中)DOM 元素的 JavaScript 附加物不能被 DOM 收集器进行垃圾收集。
      • 我故意在评论中加入了“[primitive]” :)
      【解决方案4】:

      是的,它有效,但这不是一个好主意。

      如果你想在元素上存储一些数据,最好使用.data('foo', 'bar');。

      【讨论】:

      • 为什么这不是一个好主意? .data() 是否适用于具有 pre-html5 文档类型和 IE8 的页面? .attr() 似乎对我来说很好,但我很好奇为什么 .data 是更好的选择。谢谢!
      【解决方案5】:

      是的,你能做的最好的事情就是测试它。

      <script>
      $(document).ready(function() {
        // Handler for .ready() called.
        alert( "custom1 = " + $("#myField").attr("custom1") );
      });
      </script>
      
      <div id="myField" custom1="My Custom Field"></div>
      

      现在,您正在破坏标记,所以我建议将您的信息存储在 ALT 标记或 NAME 标记中以防止发生这种情况 ()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-08
        • 2011-09-17
        • 2011-07-13
        • 2010-11-25
        • 2019-02-04
        • 2022-01-02
        • 1970-01-01
        相关资源
        最近更新 更多