现在我想在google-maps中为不同的缩放级别设置不同的类。现在它只添加了类,并没有删除以zoom-
开头的类,我在这里做错了什么? :
// setMarkerSize by different zoomLevels
if (z === 16) { $('.marker').removeClass("[className^='zoom-']").addClass('zoom-16'); }
if (z === 17) { $('.marker').removeClass("[className^='zoom-']").addClass('zoom-17'); }
if (z === 18) { $('.marker').removeClass("[className^='zoom-']").addClass('zoom-18'); }
答案 0 :(得分:3)
removeClass()
只接受类名,而不是选择器。
您可以这样做:
var $el = $('.marker');
var classList = $el.attr('class').split(' ');
$.each(classList, function(id, item) {
if (item.indexOf('zoom-') == 0) $el.removeClass(item);
});
$el.addClass('zoom-' + z); // zoom-16, zoom-17, zoom-18 etc.
答案 1 :(得分:3)
这将删除所有现有的缩放类。最后添加新课程。
var z = 18;
var items = [16, 17, 18];
$.each(items, function (ind, val) {
if (z === val) {
$(".marker").removeClass(function (index, css) {
return (css.match(/(^|\s)zoom-\S+/g) || []).join(' ');
}).addClass('zoom-' + val);
}
});