【问题标题】:Creating a new attribute with jQuery [duplicate]使用 jQuery 创建新属性 [重复]
【发布时间】:2025-12-21 17:15:17
【问题描述】:

可能重复:
jQuery .attr retrieving custom attribute returns undefined

我有一个奇怪的问题,但我希望我只是在做一些愚蠢的事情。我正在尝试使用 jQuery 在 <img> 元素上创建一个新属性,这一行:

$(selector).attr('selected', 'no');

当我在 Chrome 中检查 DOM 时,我只看到 selected="selected",无论我将值设置为什么。

只是一些额外的信息:我不能只使用布尔值,因为我需要跟踪“是”、“否”和“部分”属性值。我正在从 img 本身的“onClick”事件中调用一个 JS 函数,并将 this 作为参数传递。我检查了方法中的对象,并传递了正确的对象;设置属性的事实(即使设置了错误的值)也支持这一点。

我很确定我在这里做了一些愚蠢的事情......任何建议都将不胜感激。

【问题讨论】:

    标签: javascript jquery image attr


    【解决方案1】:

    Selected 已经是 HTML 标准中的属性,因此您不能创建具有相同名称的自定义属性。在这种情况下,您应该改用data- 属性并创建一个属性data-selected

    在 jQuery 中,您使用 .data() 方法处理自定义数据属性。

    自定义数据属性在 HTML5 规范 here 中进行了描述。

    【讨论】:

      【解决方案2】:

      如果您需要将任意数据附加到元素,请使用.data(),而不是.attr()

      【讨论】:

        【解决方案3】:

        DOM 属性不同于 DOM 属性 ;)

        我建议将$(selector).data() 用于您的用例。

        【讨论】:

          【解决方案4】:

          您可以像这样插入data-* 自定义属性

          $(selector).data('selected', 'no');
          

          您的元素将设置 data-selected 属性

          【讨论】: