我正在尝试使用以下jquery代码修改具有给定类的div:
$("[class^=delay-][class$='+number+']").each(function(index) {
var delayTime = $(this).attr('class').match(/delay-(\d+)/)[1];
$(this).removeClass("[class^=delay-][class$='+number+']");
$(this).data('data-wow-delay', delayTime + 's');
});
我正在使用上面的脚本,但它似乎没有成功识别该类。
答案 0 :(得分:2)
jquery通配符不适用于removeClass
这是正确的,因为removeClass不使用选择器,它使用显式类名 - 它直接等同于addClass,为此没有通配符。
您可以获取所有类并循环遍历它们,为remove类提供精确值,并在您的情况下为delayTime值。
// match where all the classes might contain a relevant one
$("[class*='delay-']").each(function() {
// Keep 'this' for inside later loop
var el = $(this);
// get all the classes
var classList = el.attr('class').split(/\s+/);
// loop each class to check if it's one to remove
$.each(classList, function(index, item) {
if (item.startsWith("delay-")) {
el.removeClass(item);
var delayTime = parseInt(item.substring(6), 10);
el.data('data-wow-delay', delayTime + 's');
}
});
});
您可以使用$.map
减少代码,但这可以提供这个想法。