18

最近,我在我的 rails 应用程序中遇到了 HTML 自定义数据属性的问题。我使用以下模式向 html 标记添加一些数据属性,并稍后在我的 javascript(jQuery) 代码中使用它们:

= %a.name{ href: "url.com", data: {first_name: "ben", last_name: "amsalem} }

在 javascript 代码中,我访问这些属性:

alert($(".name").data("first_name") + " " + $(".name").data("last_name"));

在我的开发环境中,它运行良好并且我得到了预期的结果(过去我的生产环境也是如此),但是在我当前的生产版本中,我得到了“未定义”的值。我检查了页面的 HTML 源代码,发现现在有类似的内容:

<a class="name" href="url.com" data-first-name="ben" data-last-name="amsalem" />

代替:

<a class="name" href="url.com" data-first_name="ben" data-last_name="amsalem" />

为什么会这样?是什么导致了这种变化?

4

3 回答 3

16

这是完全正常的,data: { first_name: "ben" }应该产生data-first-name="ben"

访问此属性的最佳方式是使用.data("firstName"),但.data("first-name")也可以。

于 2013-03-05T16:31:23.743 回答
4

我认为您正在使用 HAML。自 4.0 以来,Hypernation 是默认设置。设置hyphenate_data_attrs为 false 将其关闭。

文档:http ://haml.info/docs/yardoc/Haml/Options.html#hyphenate_data_attrs-instance_method

原github pull讨论:https ://github.com/haml/haml/pull/488

于 2013-03-05T16:53:13.090 回答
0

经过测试我做了:似乎在开发中我在版本 3.2.9 中有 gem,而在生产中它是 3.2.12 -<a date-last_name/>在这些版本之间修复了错误的行为(转换为),升级我的开发版本后,我可以看到改变。

于 2013-03-05T17:14:26.583 回答