【发布时间】:2018-09-13 08:32:46
【问题描述】:
所以我正在创建一个函数来选择一个单击的 span 元素,具体取决于它的数据属性和它的值。我做了这个
function moveFilterElements(event) {
if ($(event).hasClass('active')) {
var dataAttributes = $(event).data(),
dataKey = Object.keys(dataAttributes)[0],
dataValue = dataAttributes[Object.keys(dataAttributes)[0]];
$(event).parents('.filters-container').find('.label[data-' + dataKey + '=' + dataValue + ']').toggleClass('active');
$(event).parents('.filters-container').find('.btn-show-filters').find('.label[data-' + dataKey + '=' + dataValue + ']').remove();
updateFiltering();
}
else {
var clonedActiveItem = $(event).clone(true);
$(event).parents('.filters-container').find('.filters-selected').append(clonedActiveItem);
clonedActiveItem.toggleClass('active');
$(event).toggleClass('active');
updateFiltering();
}
}
F.ex 数据属性如下所示:'data-subject' - 工作正常。
'data-category-name' 由于 HTML DOM 标准而转换为 'categoryName'。
我可以通过将它们命名为“data-categoryname”来绕过它,但这也与命名标准冲突。
那么我该如何解决这个问题?我需要一个正则表达式来再次区分这个词吗?这是唯一的方法吗?
【问题讨论】:
-
究竟是什么将 'data-category-name' 转换为 'data-categoryName' ?它不是 HTML 标准,其中数据属性名称应全部小写。你在使用 MVC/Razor 吗?如果是这样,请使用
_而不是-作为名称,它会将_转换为-。 -
啊,感谢您的澄清 - 它专门与
.dataset()相关 - 不是 HTML DOM 对此负责,而是 jquery.data()- 不管是什么原因你仍然有问题。 -
jQuery 调用
.camelCase内部方法来做到这一点,反向在这里,你可以使用:stackoverflow.com/questions/16640527/…
标签: javascript jquery jquery-selectors