jquery - 覆盖样式,只需要jQuery解决

标签 jquery html css

我有一些简单的投票机制,所有魔术师都通过 jQuery 提供,但它现在工作正常只是因为我在 CSS 中有 !important 声明:.rating-hover { background -颜色:黄色!重要; }。如何删除此声明并仅通过 jQuery 解决此问题?

所以问题是如何在悬停时始终显示黄色背景色,即使我们选择了一些具有绿色背景色的元素也是如此。

附言我知道如何通过更改 html/css 来完成所有这些,但问题是如何仅通过添加特定的 jQuery 代码来完成。

这就是全部代码:

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <style>
  body {
   font-family: Verdana;
  }
  h3 {
   color: darkblue;
  }
  .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;
  }
 </style>
</head>
<body>
 <h3>Rate this</h3>
 <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>

 <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

 <script>
        $(function() {

          // Frequently used variable:
          var item = $('.rating-circle');

          // Rating-hover effects:
          item.hover(function () {
            $(this).prevAll(item).andSelf().toggleClass('rating-hover');
          });

          // Rating-chosen effects:
          var chosen = item.click(function () {
            chosen.removeClass('rating-chosen');
            $(this).prevAll(item).andSelf().addClass('rating-chosen');
          });

        });
 </script>
</body>
</html>

here是 CodePen 中的 Playground 。

最佳答案

使用类是处理显示的好方法。我不会改变这一点。您可以将选择存储在 data- 属性中并以这种方式处理它。

fiddle :http://jsfiddle.net/f9ocusxy/

$(function () {

    // Frequently used variable:
    var item = $('.rating-circle');
    var container = $('#rating-container');

    // Rating-hover effects:
    item.hover(function () {
        $(this).prevAll(item).andSelf().toggleClass('rating-hover');
    });

    container.on('mouseout', function () {
        item.each(function () {
            if ($(this).prop('data-chosen') == '1') {
                $(this).addClass('rating-chosen');
            }
        });
    });

    container.on('mouseover', function () {
        item.removeClass('rating-chosen');
    });

    // Rating-chosen effects:
    var chosen = item.click(function () {
        chosen.removeClass('rating-chosen').prop('data-chosen', '0');
        $(this).prevAll(item).andSelf().addClass('rating-chosen').prop('data-chosen', '1');
    });

});
  body {
      font-family: Verdana;
  }
  h3 {
      color: darkblue;
  }
  .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;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h3>Rate this</h3>

<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>

关于jquery - 覆盖样式,只需要jQuery解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668962/

相关文章:

javascript - 将 HTML5 Canvas 保存到服务器上的文件夹中

jquery - $(this) 在 jQuery 顶层的含义

html - DIV 未正确拉伸(stretch)?

javascript - jQuery 中的 .html() 不起作用

jquery - 带有jquery的div弹出窗口

jquery - 悬停显示闪烁jquery

jquery - 如何使用 jQuery 选择器选择特定的 div?

jquery - 添加更多行的简单计算器

html - 带有伪元素的 CSS 叠加层

html - Chrome 背景图像在刷新时留下空白