我有这段代码正常工作,直到我从“_”转换为驼峰案例。下面是代码:使用具有数据属性的JQuery的骆驼案例的问题
//Selecting the form id
formSelector = "#" + formId;
//Selecting all input/select/textarea fields with data- attributes
elementSelector = formSelector + " input[data-errArrow], " +
formSelector + " select[data-errArrow], " + formSelector
+ " textarea[data-errArrow]";
//For each selected element...
$(elementSelector).each(function(index,element) {
console.log($(this).prop("tagName"));
console.log($(this).attr("data-errArrow"));
console.log($(this).data("errArrow"));
...
}
控制台输出是:
INPUT
mylib.js:25 R
mylib.js:26 undefined
如果数据errArrow属性的值被正确地显示为“R”,应该。数据该元素的不也显示相同的结果?为什么没有定义。在与数据属性相关的JQuery文档中,有关于骆驼大小写的一些讨论here。它说:
“如果没有数据与传递的键存储在一起,jQuery在元素的属性中搜索,将驼峰字符串转换为虚线字符串,然后将数据前置到结果中。字符串lastValue被转换为数据最后一个值。“
我不明白这可能适用于上面。我需要解决这个问题。我想要.data在示例中返回'R'。
正确的模式是'数据ERR-arrow' 。你为什么不改变你的属性? –
但是,您可以使用正确的模式尝试数据:'$(this).dataset.errArrow' –
@Marcos Perez Gude,旧式浏览器不支持本地.dataset。正如你所建议的那样,我可能会回到非camelCase。 – Sam