首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击功能和悬停功能

点击功能和悬停功能
EN

Stack Overflow用户
提问于 2016-11-29 00:26:06
回答 2查看 49关注 0票数 0

当用户将鼠标悬停在圆圈上时,该特定圆圈及其左侧的圆圈应填充黄色,当用户单击某个圆圈时,该特定圆圈及其左侧的圆圈应填充绿色。

当用户再次悬停时,最后一个活动的圆圈应该回滚到悬停效果功能,并用黄色填充,如果用户不喜欢再次单击,则必须保留以前用绿色填充的圆圈。

我已经给了rating-hover类的!important,当用户再次悬停时,给它一个优先级,现在的问题是,当用户第一次评级为4,再次考虑评级2之后,并在第二个圆圈上悬停,之前填充的4星仍然可以看到,我不想看到,用户必须感觉到新的评级,当他再次悬停时,如果不点击,必须保留以前点击的星。另外,我不喜欢使用!important;欢迎任何其他的解决方案!

代码语言:javascript
复制
$(function() {
  $('.rating-circle').hover(function() {
      $(this).prevAll().addBack().addClass('rating-hover');
    },
    function() {
      $(this).prevAll().addBack().removeClass('rating-hover');
    });
});

$(function() {
  $('.rating-circle').click(function() {
    $('.rating-circle').removeClass('rating-chosen');
    $(this).prevAll().addBack().addClass('rating-chosen');
  });
});
代码语言:javascript
复制
.rating-circle {
  height: 2em;
  width: 2em;
  border: .1em solid black;
  border-radius: 1.1em;
  display: inline-block;
  margin: 0;
  padding: .1em;
}
.rating-hover {
  background-color: yellow !important;
}
.rating-chosen {
  background-color: green;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="rating-container">
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
</div>

EN

回答 2

Stack Overflow用户

发布于 2016-11-29 00:29:04

要达到所需的效果,只需将.rating-hover类设置为比.rating-chosen更具体,以便覆盖它。为此,我在其前面添加了一个元素选择器,特别是div。然后,您还需要在触发click事件时删除.rating-hover类。

最后,请注意,您还可以将所有代码放在单个document.ready处理程序中。试试这个:

代码语言:javascript
复制
$(function() {
  $('.rating-circle').hover(function() {
    $(this).prevAll().addBack().addClass('rating-hover');
  }, function() {
    $(this).prevAll().addBack().removeClass('rating-hover');
  });

  $('.rating-circle').click(function() {
    $('.rating-circle').removeClass('rating-chosen rating-hover');
    $(this).prevAll().addBack().addClass('rating-chosen');
  });
});
代码语言:javascript
复制
.rating-circle {
  height: 2em;
  width: 2em;
  border: .1em solid black;
  border-radius: 1.1em;
  display: inline-block;
  margin: 0;
  padding: .1em;
}
div.rating-hover {
  background-color: yellow;
}
.rating-chosen {
  background-color: green;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="rating-container">
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
</div>

票数 1
EN

Stack Overflow用户

发布于 2016-11-29 00:36:37

尝试向rating-hover类添加!important。悬停按钮工作正常,但由于在您的风格中最后选择了评级,因此您需要在此处添加!重要标记。

代码语言:javascript
复制
$(function() {
  $('.rating-circle').hover(function() {
      $(this).prevAll().addBack().addClass('rating-hover');
    },
    function() {
      $(this).prevAll().addBack().removeClass('rating-hover');
    });
});

$(function() {
  $('.rating-circle').click(function() {
    $('.rating-circle').removeClass('rating-chosen');
    $(this).prevAll().addBack().addClass('rating-chosen');
  });
});
代码语言:javascript
复制
.rating-circle {
  height: 2em;
  width: 2em;
  border: .1em solid black;
  border-radius: 1.1em;
  display: inline-block;
  margin: 0;
  padding: .1em;
}
.rating-hover {
  background-color: yellow !important;
}
.rating-chosen {
  background-color: green;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="rating-container">
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
  <div class="rating-circle"></div>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40849070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档