微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery:removeClass中的通配符类选择器

当我直接指定现有类(即,ratingBlock’,’ratingBlock1′,’ratingBlock2’等)时,此代码段会在添加新类之前删除现有类.但是当我在removeClass(‘[class ^ =“ratingBlock”]’)中使用通配符选择器时,它不起作用.难道我做错了什么?谢谢.

<style type="text/css">
.ratingBlock {background:gold !important;}
.ratingBlock1,.ratingBlock2,.ratingBlock3,.ratingBlock4,.ratingBlock5 {background:LightGreen;}
</style>

<div class="test block ratingBlock">
broken
<div><a href="#" class="ratingLink ratingNo-1">1+</a></div>
<div><a href="#" class="ratingLink ratingNo-2">2+</a></div>
<div><a href="#" class="ratingLink ratingNo-3">3+</a></div>
</div>

<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(function(){
    initratingWorks();
});

function initratingWorks() {
    jQuery("a.ratingLink").bind('click',function() {
      var star = jQuery(this);
      var ratingBlock = star.parents('div.test.block');
      var rating = star.attr('class').match(/\d+/);

      if (ratingBlock.attr('class').indexOf('ratingBlock') !== -1) {
          ratingBlock.removeClass('[class^="ratingBlock"]').addClass('ratingBlock' + rating);
      }
      else {
          ratingBlock.addClass('ratingBlock' + rating);
      }

      return false;
    });
}
// ]]>
</script>

解决方法

$.removeClass()不将选择器作为参数,只接受类名(或类名).

见:Removing multiple classes (jQuery)

所以你基本上需要打电话:

$.removeClass('ratingBlock1 ratingBlock2 ratingBlock3 ratingBlock4 ratingBlock5');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐