jQuery - 以...开头的removeClass

时间:2016-06-16 13:42:11

标签: jquery

现在我想在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'); }

2 个答案:

答案 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);
    }
});